SlideShare una empresa de Scribd logo
UNIXWARE
Autor: Ing. Jack Daniel Cáceres Meza
May - 1,915
Agradecemos de antemano cualquier sugerencia que nos hagan llegar
Cualquier sugerencia sobre el material aquí
expuesto, sírvase hacerla directamente a:
Ing. Jack Daniel Cáceres Meza
al siguiente teléfono: 5114-475866
ó por escrito a la siguiente dirección: Av. Paseo de La República 3937,
Dpto. 102, Surquillo
Lima - Perú
UNIXWARE BÁSICO
JDCM UNIX SVR4 - NB i
TABLA DE CONTENIDO
ILUSTRACIONES: Pág
Figura No. 1: Integración del Sistema Operativo UNIX __________________________________ 1
Figura No. 2: Resumen Arquitectónico del Sistema Operativo UNIX _______________________ 5
Figura No. 3: Jerarquía del Sistema Operativo UNIX____________________________________ 8
Figura No. 4: Funcionamiento del shell _____________________________________________ 11
PARTES CONSTITUTIVAS: Pág
BASES DEL SISTEMA OPERATIVO UNIX ______________________________________________ 1
COMANDOS BASICOS ______________________________________________________________ 17
COMUNICACIONES ________________________________________________________________ 38
APENDICES ________________________________________________________________________ a
CONTENIDO: Pág
TABLA DE CONTENIDO..................................................................................................................i
Comandos de Referencia en Línea iii
BASES DEL SISTEMA OPERATIVO UNIX ______________________________________________ 1
A. ESTRUCTURA DEL SISTEMA UNIX.........................................................................................1
01. DEFINICION DEL SISTEMA UNIX 1
02. CARACTERISTICAS UNIX 1
03. UN POCO DE HISTORIA SOBRE EL SISTEMA UNIX 1
04. COMPOSICION DEL SISTEMA OPERATIVO UNIX 5
05. CAPAS QUE LO CONFORMAN 5
06. CLASIFICACION DE ARCHIVOS 6
07. CONVENCIONES PARA NOMBRAR ARCHIVOS 6
08. CARACTERES DE REDIRECCIONAMIENTO 7
09. METACARACTERES 7
10. INTERPRETACION DE LOS METACARACTERES 7
11. SU LUGAR EN EL SISTEMA DE ARCHIVOS 7
12. NAVEGANDO POR LA ESTRUCTURA DE ARCHIVOS 7
13. DESCRIPCION DE DIRECTORIOS IMPORTANTES 8
B. ACCESO AL SISTEMA UNIX .....................................................................................................9
01. QUE ES NECESARIO? 9
02. CONVENCIONES GENERALES 9
C. LINEAS DE COMANDO............................................................................................................10
01. INTRODUCCION 10
02. SINTAXIS O COMO EJECUTARLOS 10
03. COMO EJECUTA EL SISTEMA UNIX UN COMANDO 11
D. EDITORES DE TEXTOS............................................................................................................11
01. INTRODUCCION 11
02. COMO TRABAJAN 11
03. EDITOR ‘ed’ 12
04. EDITOR ‘vi’ - PARTE I 13
COMANDOS BASICOS ______________________________________________________________ 17
A. MANEJO DE DIRECTORIOS Y ARCHIVOS............................................................................17
01. Comando ‘pwd’ 17
JDCM UNIX SVR4 - NB ii
02. Comando ‘ls’ 17
03. Comando ‘mkdir’ 18
04. Comando ‘rmdir’ 18
05. Comando ‘rm’ 19
06. Comando ‘cd’ 19
07. Comando ‘cp’ 20
08. Comando ‘mv’ 20
09. Comando ‘file’ 21
10. Comando ‘cat’ 21
11. Comando ‘pg’ 22
12. Comando ‘head’ 22
13. Comando ‘tail’ 23
14. Comando ‘diff’ 23
15. Comando ‘wc’ 24
16. Comando ‘grep’ 24
17. Comando ‘sort’ 25
18. Comando ‘cut’ 25
19. Comando ‘find’ 26
B. OTROS COMANDOS.................................................................................................................26
01. Comando ‘date’ 27
02. Comando ‘cal’ 27
03. Comando ‘calendar’ 28
04. Comando ‘banner’ 28
05. Comando ‘split’ 28
C. IMPRESION DE ARCHIVOS - PARTE I....................................................................................29
01. Comando ‘lp’ 29
02. Comando ‘lpstat’ 29
03. Comando ‘cancel’ 30
D. MANEJO DE ACCESOS ............................................................................................................30
01. CONSIDERACIONES EN LOS PASSWORD 30
02. FACTORES PARA VIGENCIA DEL PASSWORD 31
03. Comando ‘passwd’ 32
04. Comando ‘chown’ 35
05. Comando ‘id’ 35
06. Comando ‘groups’ 35
07. Comando ‘chgrp’ 36
08. Comando ‘newgrp’ 36
09. MANEJO DE LOS PERMISOS DE ACCESO 36
10. Comando ‘chmod’ 37
COMUNICACIONES ________________________________________________________________ 38
A. COMUNICACIONES EN EL AMBIENTE UNIX ......................................................................38
01. INTRODUCCION 38
02. ARCHIVOS PARA MENSAJES BASICOS 38
03. Comando ‘tty’ 38
04. Comando ‘stty’ 39
05. Comando ‘news’ 39
06. Comando ‘mesg’ 40
07. Comando ‘who’ 40
08. Comando ‘finger’ 41
09. Comando ‘write’ 41
10. Comando ‘wall’ 42
11. Comando ‘mailx’ 43
APENDICES ________________________________________________________________________ a
ACCESO A MS-DOS.........................................................................................................................a
BIBLIOGRAFIA a
Notas b
JDCM UNIX SVR4 - NB iii
Comandos de Referencia en Línea
 Los siguientes comandos UNIX le brindan acceso en línea a la información del manual de referencia:
• MAN Accesa a las entradas del manual de referencia en el sistema.
• MANDEX Accesa a un sistema indexado manejado por menú con el fin de buscar
los manuales en línea seleccionados para un determinado asunto o
comando.
 Utilícelos siempre!
Curso: Unixware
JDCM UNIX SVR4 - NB 1
BASES DEL SISTEMA OPERATIVO UNIX
A. ESTRUCTURA DEL SISTEMA UNIX
01. DEFINICION DEL SISTEMA UNIX
a) DEFINIMOS UNIX COMO
 Un sistema operativo o conjunto especial de programas (software) que controla el
funcionamiento del computador.
 Una colección de programas aplicativos denominados a menudo “herramientas” o
“utilitarios”.
b) QUE ES UN SISTEMA OPERATIVO?
 Un conjunto de programas que controla y organiza las actividades de un computador.
 Actúa como nexo entre el computador y sus usuarios, terminales, impresoras y dispositivos para
almacenamiento de información como discos y unidades de cinta.
 Distribuye los recursos del computador al:
 Controlar la memoria del mismo,
 Controlar y organizar las tareas a realizarse,
 Mantener eficientemente el uso de la memoria y dispositivos periféricos.
02. CARACTERISTICAS UNIX
 Provee un medio computacional simple, eficiente, flexible.
 Ofrece las siguientes ventajas:
 Ser un sistema de propósito general para realizar una gran variedad de trabajos o aplicaciones.
 UNIX es un ambiente interactivo que permite comunicarse directamente con el computador y recibir
respuestas inmediatas a sus requerimientos y mensajes.
 Es un ambiente multi-usuario que le permite compartir los recursos del computador con otros
usuarios sin sacrificar su productividad.
 Es un ambiente multi-tarea que le permite a cualquier usuario el ejecutar más de un programa
simultáneamente.
 Es portable ya que existe en muchos tipos de computadores y es debido a que está escrito de modo
que no se centra en un hardware específico.
 Posee herramientas poderosas para desarrollo.
 El UNIX SVR4 unifica las versiones importantes de UNIX (BSD, SunOS, XENIX, AT&T) en un
producto robusto que sigue los estándares de la industria.
XENIX
UNIX SVR4
SunOS
4.3BSD
UNIX
SVR3
Figura No. 2: Integración del Sistema Operativo UNIX
03. UN POCO DE HISTORIA SOBRE EL SISTEMA UNIX
JDCM UNIX SVR4 - NB 2
En 1965, los Bell Telephone Laboratories
participaron en un proyecto junto con la General
Electric Company y el Projecto MAC del MIT
(Massachusetts Institute of Technology) para
desarrollar un nuevo sistema operativo denominado
MULTICS (Multiplexed Information and Computing
System). Las metas del sistema MULTICS eran las de
proveer acceso simultáneo al computador por parte de
una gran comunidad de usuarios, amplio poder de
cómputo y almacenamiento de información, y permitir
a los usuarios el compartir fácilmente su información,
si así lo deseaban.
Aunque hacia 1969 estaba corriendo una versión
primitiva del sistema MULTICS en un computador
General Electric 645, no brindaba el servicio general
de computación que se suponía ni tampoco estaba
claro para cuándo se lograrían sus metas por lo tanto,
la Bell Laboratories suspendió su participación en el
proyecto.
Sin embargo, puesto que otros sistemas
operativos de esos dias eran orientados al proceso
batch, Ken Thompson, Dennis Ritchie y otros,
miembros del Computing Science Research Center de
los Bell Laboratories y participantes en el desarrollo
de MULTICS, permanecieron leales a él y decidieron
escribir su propio sistema operativo basado en sus
mejores características, a la vez que incorporaban
algunos conceptos propios. Este sistema operativo fue
escrito en lenguaje ensamblador en 1969 y fue
llamado UNIX en 1970, habiendo cambiado su
nombre del original UNICS (Uniplexed Information
and Computing System), dado por Kernighan.
Para probar este nuevo sistema operativo se
escogió el computador PDP-7 de Digital Equipment
Corporation en 1971 (realmente, se encontraba sin
uso), y aunque de alguna manera primitivo según los
estándares actuales, el PDP-7 UNIX brindó a
Thompson y Ritchie un ambiente para programación
más amigable que sus alternativas.
En este ambiente, los dos continuaron
implementando ideas para el Sistema UNIX.
Cimentaron las bases para un interpretador de
comandos al que denominaron “shell”i. Este shell
actúa como intermediario entre el usuario y el
computador al traspasar al sistema los comandos
ingresados por el usuario y al disponer la ejecución de
los mismos.
El trabajo con el sistema operativo continuó y
durante ese tiempo, el Sistema UNIX fuere-escrito en
un lenguaje de alto nivel denominado “B” por su
creador Thompson, el cual era interpretativo.
En 1971, Ritchie refinó “B” y agregó
características de programación estructurada
renombrándolo “C”, a la par que ya se podía generar
código máquina, declaración de tipos de datos, y
definición de estructuras de datos.
Pero como un sistema operativo escrito en
lenguaje ensamblador es dependiente de la máquina
para la cual se escribió, no puede transferirse de una
máquina a otra. Hoy sólo unas cuantas rutinas del
núcleo del sistema operativo están escritas en lenguaje
ensamblador. Puesto que el Sistema UNIX fué re-
escrito en el nuevo lenguaje “C” en 1973, tiene la
habilidad adicional de ser transportable entre
diferentes computadores.
Este fué el primer intento de codificar un sistema
operativo entero en un lenguaje de alto nivel, y la
portabilidad que se consiguió está ampliamente
considerada como una de las razones principales de la
popularidad que el Sistema Operativo UNIX goza hoy.
Durante este período se introdujeron los “pipes”
(enlaces, tubos o cauces). Al enlazar la salida
(resultado) de un comando con la entrada (órdenes) de
otro comando, se pueden encadenar comandos que
evitan la creación de excesivos archivos temporales.
Por esos años también se iniciaron las herramientas
para proceso de textos lo que condujo a que el primer
cliente real del sistema UNIX fuera la Oficina de
Abogados de Patentes de los Laboratorios Bell.
Las mejoras a la estructura del sistema de
archivos básico condujeron a la creación de la
estructura jerárquica o de árbol, existente hoy. La
descripción absoluta del nombre de un archivo en esta
jerarquía permite al usuario moverse a través de todos
los directorios y redes de archivos en el sistema.
Se asignaron nombres a dispositivos tales como
terminales, discos, o cintas y a través de estos
nombres, el Sistema Operativo UNIX puede
comunicarse con cada dispositivo.
Dado que el Sistema UNIX tuvo sus raíces en el
centro de desarrollo de los laboratorios Bell y en las
salas de cómputo de las universidades -ya que éstas
escucharon acerca de las actividades en los
Laboratorios Bell y empezaron a indagar por el
Sistema Operativo UNIX, a través de los años se han
desarrollado muchas versiones del sistema UNIX las
cuales incorporaron las mejoras y modificaciones
creadas por estos esfuerzos de desarrollo.
Esto dió lugar a que a finales de los ‘70ii
una
generación completa de profesionales en informática
aprendiera su profesión con el sistema UNIX y que
apareciera toda una ola de innovaciones entre las que
destaca la ampliamente utilizada versión de la
Universidad de California en Berkeley iii
-la cual
estuvo involucrada en el Sistema UNIX desde 1974
gracias a Thompson.
Esta versión es tan importante que la Defense’s
Advanced Research Projects Agency (DARPA) de
Estados Unidos decidió basar su entorno de
computación universal en el Sistema UNIX y lo
encargó a Berkeley.
El sistema UNIX pasó por varias revisiones
internas antes que estuvieran disponibles fuera de los
Laboratorios Bell unas pocas copias de la Versión 4 y
a fines de 1973 la Versión 5, ésta última por una
mínima regalía, pero sin ofrecer soporte para él. En
1976 la Versión 6 fué la primera versión ampliamente
difundida y en 1978, el Grupo de Investigaciones de
los Laboratorios Bell liberó la Versión 7 para la PDP-
11, seguida por la 32V para sistemas VAX de DEC la
cual adiciona paginación de memoria, produciendo el
3BSD (Release 3 de la BSD). Posteriormente, los
Laboratorios Bell ATT han desarrollado la Edición
Octava y Edición Novena, como investigación interna.
Desarrollos posteriores incluyen la Edición Sexta
en 1975 y la Edición Séptima en 1977 iv
. Las
versiones comerciales del Sistema UNIX empezaron
en 1977 con el “Programmer’s Workbench System”
(PWB/UNIX), que se derivó de la Versión 6. En 1980
Microsoft introdujo el Sistema XENIX v
, una
variante del Sistema UNIX Séptima Edición y algunos
utilitarios del 4.1BSD, que fue diseñado para
ejecutarse en microcomputadoras. El System III
apareció en 1981 y combinaba características del
PWB/UNIX y de la Versión 7.
JDCM UNIX SVR4 - NB 3
Sin embargo, algunas restricciones
gubernamentales previnieron comercializar esta
versión fuera de Bell por el Decreto de Concesión de
1956 del Departamento de Justicia, que impedía que el
sistema contuviera tecnología del momento. Una vez
que estas restricciones fueron removidas, debido al
desmembramiento judicial de las Bell Operating
Companies, se anunció el UNIX System V en
1983 vi
.
Esta versión ofrecía un paquete sofisticado para
comunicaciones entre procesos el cual incluía
semáforos, mensajes y memoria compartida, así como
algunas características tomadas de la versión del
sistema de Berkeley de ese entonces como por
ejemplo, el editor ‘vi’, el ‘C-shell’, el manejador de
base de datos relacional INGRES, control de tareas,
redes -las cuales, en 1984 vii
, con el 4.2BSD
permitieron un amplio acceso a los protocolos
Ethernet y TCP/IP los cuales fueron adoptados por
muchos vendedores, así como otras nuevas
facilidades-.
Debido a la portabilidad de los Sistemas UNIX,
durante los siguientes dos años se captó rápidamente
el interés comercial y compañías como Rand Corp.,
Yourdon Inc., y Onyx Systems adquirieron las
primeras licencias de uso comercial.
Luego aparecieron el UNIX System V Release 2
en 1984 -que introdujo protección de archivos durante
cortes de potencia, bloqueo de archivos y registros
para uso exclusivo por un programa, control de
trabajos, entre otras cosas- y el UNIX System V
Release 3 en 1987, conocidos como SVR2 y SVR3
respectivamente. Esta última ha incorporado la
facilidad de comunicaciones STREAMS y la TLI
(Transport Layer Interface) las cuales permiten el
soporte de servicios para red en forma independiente
del medio y del protocolo, y el FACE (Framed Access
Command Environment), que proporciona una interfaz
de usuario orientada a menú.
Esta sofisticación técnica en aumento, junto con
una campaña de mercadeo por parte de ATT, puso al
System V en una posición de liderazgo en el mercado
mundial, mientras que las versiones BSD resultaban
dominantes en las comunidades universitarias y
técnicas.
En Enero de 1985 ATT liberó la SVID (System
V Interface Definition) el cual es un documento legal
y protegido para sistemas abiertos no propietarios, la
que codificaba muchas de las interfaces del System V
Release 2. Fué influenciado por el ‘/usr/group’
Standard viii
de 1984, adoptando facilidades como
bloqueo de archivos.
Al igual que el ‘/usr/group Standard’, la intención
del SVID es la de promover la portabilidad de
aplicaciones y es de la misma manera, independientes
del hardware. Se evitó la información específica de la
implementación en lo posible y se utilizaron nombres
simbólicos para valores numéricos.
El primer volumen del SVID define el sistema
base y las extensiones del kernel mientras que el
segundo define utilitarios básicos y avanzados, soporte
al desarrollo de software, administración del sistema y
extensiones para la interface de terminales. Un tercer
volumen dado a conocer en 1987 incluye una adición
al sistema base que actualiza los dos primeros
volúmenes, así como material acerca de nuevas
facilidades en el System V Release 3. Este volumen
incluye los últimos desarrollos técnicos específicos al
System V, como la facilidad de comunicaciones
STREAMS y redes.
Un nuevo capítulo, titulado SVID89 incluye
características del también nuevo System V Release 4,
el cual soporta muchas interfaces y comandos
adoptados de sistemas BSD y XENIX, interfaces para
ventanas, mayor soporte para la administración del
sistema, internacionalización y tiempo real, además de
incluir el soporte a la X/OPEN Portability Guide
Version 3 ix
, ANSI-C y POSIX.1 x
.
A pesar de estos estándares, el mover
aplicaciones de una arquitectura de procesadores a otra
o aún, entre un equipo de un vendedor y otro
utilizando la misma arquitectura resulta costoso y
lento. Aquí empezó un esfuerzo para unificar las
muchas variantes de UNIX.
A principios de 1987, ATT anunció un acuerdo
con Microsoft para unir su XENIX en el System V. En
octubre del mismo año, ATT y SUN Microsystems
anunciaron una alianza en la cual SUN trabajaría con
ATT para unir su sistema operativo SunOS -basado
en el 4.2BSD- con el SVR4, junto con XENIX. Esto
hubiera conducido a un único estándar -unificado- de
UNIX si los temores de la competencia no hubieran
intervenido.
La decisión de ATT de adoptar el
microprocesador SPARC como la arquitectura para
afinar el sistema UNIX asustó a los competidores de
SUN en el mercado de las estaciones de trabajo, que
temieron que el rendimiento de UNIX estuviera
comprometido en sus propias arquitecturas.
Es así que Hewlett Packard, DEC e IBM
formaron la OSF xi (Open Software Foundation) en
mayo de 1988 para desarrollar su propia
implementación de UNIX. En respuesta, los
vendedores de hardware y software leales al SVR4
formaron UNIX INTERNATIONAl (UI) xii
.
El 15 de mayo de 1990, la OSF liberó
oficialmente un nuevo estándar para la computación
distribuída, el DCE (Distributed Computing
Environment).
UNIX International ha definido un producto más
competitivo que el DCE utilizando la arquitectura
ODC (Open Distributed Computing) de UNIX
Software Laboratories como el núcleo de su
arquitectura la cual denomina ATLAS, y está presente
desde el 16 de Setiembre de 1991.
a) LA NECESIDAD DEL MERCADO DE UN ESTANDAR
A medida que el Sistema Operativo UNIX ha incrementado su sofisticación, también lo han
hecho las necesidades de sus usuarios.
Los tipos de hardware y diferentes sistemas continúan en aumento. las velocidades y
capacidades han aumentado dramáticamente, el sistema corre en hardware que va de micros a
minis, multiprocesadores, mainframes y supercomputadores.
JDCM UNIX SVR4 - NB 4
Los usuarios de Sistemas UNIX no son más meros programadores o están vigentes sólo en
ambientes de investigación académica. La base de usuarios se extiende ahora también al mundo de
los negocios: ejecutivos, grupos de soporte, personal de mercadeo e investigadores industriales.
Nuevas clases de usuarios demandan nuevas clases de aplicaciones. A medida que los
vendedores han adicionado nuevas facilidades a los sistemas para soportar estas nuevas demandas
de aplicaciones, sus productos han adquirido a menudo diferentes facilidades y nuevas
implementaciones de interface. Con esto, los diferentes sistemas han diferido y se acrecienta la
necesidad de estándares.
b) ¿POR QUE ESTANDARES?
Un estándar de interface para sistema operativo que sea seguido por todos los vendedores
permitiría que los programas sean escritos para un ambiente específico en el cual éstos pudieran ser
ejecutados sin modificaciones en diferentes sistemas.
Para la industria, una portabilidad como ésta es importante ya que permite mayor producción y
distribución de aplicaciones. De esta manera, los estándares ahorran tiempo y dinero a los usuarios
y a los proveedores, a la par que ofrecen una base firme en un mercado incierto.
c) LA ARQUITECTURA ATLAS
 Un ambiente completo de servicios y aplicaciones distribuídas: amplia.
 Una solución de estado del arte que impulsa la tecnología existente: está establecida.
 Una metodología que integra la computación heterogénea sin interrumpir aplicaciones
existentes, comunicaciones y/o formatos de datos: no invade otros terrenos.
d) ¿QUE PROVEE LA ARQUITECTURA UI-ATLAS?
 Necesidades computacionales totales:
 Toma las necesidades de tres audiencias claves:
» Usuarios finales/centro de datos,
» Administradores de sistemas distribuídos,
» Desarrolladores de aplicaciones distribuídas.
 Administradores de Sistemas.
 Administradores de Transacciones.
 Compatibilidad con bases instaladas (ahora y en el futuro).
 Evolución transparente a partir de tecnología disponible hoy en el System V.
 Evolución controlada por la industria (basada en estándares).
 Soporte de tecnologías que prometan reducir significativamente el costo del
desarrollo/portabilidad de aplicaciones.
e) BIBLIOGRAFIA
UNIX International
UNIFORUM
Unix System V Version 4
Kenneth H.Rosen - Richard R. Rosinski - James M.
Farber,
Osborne/McGraw Hill, 1991
The Design of the UNIX Operating System
Maurice J. Bach
Prentice-Hall INC./ATT,1987
JDCM UNIX SVR4 - NB 5
04. COMPOSICION DEL SISTEMA OPERATIVO UNIX
Manipulación
de
archivos
Utilidades
Matemáticas
Utilidades
para
manejar
impresoras
Redes y
Comunicaciones
Herramientas
para
Desarrollo de
Software
Procesamiento
de Textos (vi)
Compilador 'C'
Utilidades
para
manejar
terminales
kernel
shell
Figura No. 3: Resumen Arquitectónico del Sistema Operativo UNIX
05. CAPAS QUE LO CONFORMAN
a) KERNEL
 Maneja la memoria.
 Mantiene el sistema de archivos.
 Controla el acceso al computador.
 Distribuye los recursos del sistema entre los usuarios.
b) FILESYSTEM
 Piedra angular del Sistema Operativo UNIX.
 Proporciona un método lógico para organizar, obtener y manejar información.
 Su estructura es jerárquica, semeja un árbol invertido u organigrama.
 Su unidad básica es el archivo.
c) SHELL
 Es un programa que sirve como interpretador de comandos y permite la comunicación con el
sistema operativo.
 Pasa los requerimientos al kernel y se asegura que son ejecutados.
 El más popular es el Bourne shell.
 También es un lenguaje de programación.
 Puesto que puede leer las entradas que se le den y retornar mensajes, se le describe como
interactivo.
d) APLICACIONES O HERRAMIENTAS
 Son un conjunto de intrucciones para el computador.
JDCM UNIX SVR4 - NB 6
 Si un conjunto de instrucciones es ejecutado por el computador sin necesidad de traducirlo
entonces a este conjunto se denomina “programa ejecutable” o “comando”.
 Son utilitarios diversos (procesadores de texto, hojas de cálculo, graficadores, etc.)
 Se utilizan para comunicaciones (comunicaciones simples como entre el terminal del usuario y
el computador hasta comunicaciones con otros computadores utilizando protocolos específicos
-SNA, X.25, OSI)
 Algunas permiten el manejo de información (desde crear un archivo hasta manejar bases de
datos con construcciones complejas como disco espejo, etc.)
 Otras preparan un ambiente para programación (todos los compiladores disponibles en el
mercado)
06. CLASIFICACION DE ARCHIVOS
a) ARCHIVO ORDINARIO
 Es una colección de caracteres que se trata como una unidad.
 Se usan para almacenar información.
 Esta información puede ser texto, reporte, comando, etc.
b) DIRECTORIO
 Es un super archivo que contiene un grupo de archivos relacionados.
 Su función es la de ser un puntero a otros archivos o directorios.
 A esta relación (jerarquía) se denomina relación padre - hijo ya que los archivos contenidos en
un directorio están subordinados a éste.
c) ARCHIVOS ESPECIALES
 En realidad es un puntero a un dispositivo (impresora, terminal, disco).
 Se ubican en general en el directorio /dev.
 El sistema los lee y escribe de la misma forma que lo hace con los archivos ordinarios sin
embargo,
 Los requerimientos de lectura y escritura no activan el mecanismo normal de acceso a archivos
sino que activan el manejador del dispositivo asociado con el archivo.
07. CONVENCIONES PARA NOMBRAR ARCHIVOS
 Deben ser descriptivos.
 Los nombres pueden tener hasta un máximo de 14 caracteres de longitud para el sistema de archivos tipo
‘ s5 ‘ y 256 para el tipo ‘ ufs ‘.
 Pueden consistir de:
1. Letras mayúsculas : ( A - Z )
2. Letras minúsculas : ( a - z )
3. Números : ( 0 - 9 )
4. Puntos : ( . )
5. Comas : ( , )
6. Caracter subrayado : ( _ )
 No pueden tener caracteres especiales (esto es, caracteres diferentes a los mencionados antes).
 Deben empezar con un caracter alfanumérico.
 No debe haber espacios dentro del nombre.
 Las mayúsculas se diferencian de las minúsculas.
 Dentro de un directorio los nombres deben ser únicos.
JDCM UNIX SVR4 - NB 7
08. CARACTERES DE REDIRECCIONAMIENTO
  Input desde un archivo.
  Salida hacia un archivo.
  Adiciona a un archivo.
09. METACARACTERES
 El caracter ‘ ? ‘ identifica un solo caracter:
fi? encuentra “fig”, “fin”
 El caracter ‘ * ‘ identifica cualquier combinación de cualquier número de caracteres:
fi* encuentra “fig”, “figura”, “finura”
 El conjunto de caracteres ‘ [ ] ‘ identifica un agrupamiento de caracteres:
 fi[gn] encuentra “fig”, “fin”
 file[1-4] encuentra “file1”,”file2”,”file3”,”file4”
 [Ff]ile encuentra “File” o “file”
 [F,g,h]ile encuentra “File” o “gile” o “hile”
 file[!1-3] encuentra aquellos archivos que no terminan en 1 o 2 o 3
10. INTERPRETACION DE LOS METACARACTERES
 Encerrarlos entre apóstrofes simples ( ‘ ) para tratar todo el dato entre ellos como un solo literal.
 Las comillas permiten interpretar dentro del dato algunos caracteres especiales como: $, `, . .
 El backslash (  ) que precede a un metacaracter neutraliza su significado.
 Los acentos graves o apóstrofes invertidos ( ` ) permiten la sustitución de un comando por su resultado.
Ejemplos:
$ echo “No haga eso !”
No haga eso !
$ echo ***
***
$ echo x `*` y
x * y
$ echo “La fecha es: `date`”
La fecha es: Thu Nov 20 12:45:16 EDT
11. SU LUGAR EN EL SISTEMA DE ARCHIVOS
 Cada vez que Ud. interactúa con el sistema UNIX, lo hace desde una ubicación precisa dentro de su
estructura de archivos.
 El Sistema UNIX lo posiciona automáticamente en un punto específico de su sistema de archivos cada
vez que Ud. lo accesa.
 Desde ese punto Ud. puede moverse a través de la jerarquía para trabajar con sus directorios y archivos
y accesar a aquellos que pertenecen a otros usuarios y sobre los cuales Ud. tiene permiso de acceso.
 Igualmente, aquí puede crear o borrar archivos y directorios así como controlar el acceso a los mismos.
12. NAVEGANDO POR LA ESTRUCTURA DE ARCHIVOS
 Una estructura de archivos UNIX siempre se inicia con un directorio proporcionado por el sistema,
denominado “root” y representado por el símbolo “ / “.
 Este directorio es la raíz, origen o punto de partida de cualquier otro directorio o archivo que se cree en
el sistema.
 Un directorio es un archivo que contiene punteros hacia otros archivos u otros directorios. Estos
directorios denominados “subdirectorios” pueden a su vez contener punteros hacia otros archivos o
directorios, y así sucesivamente.
 El formato utilizado para referirse a un archivo en esta estructura es:
/directorio/directorio/nombre_del_archivo
JDCM UNIX SVR4 - NB 8
 Esta estructura de concatenación de archivos utilizando el caracter “ / “ se denomina nombre completo o
“pathname”. cuando a Ud. se le asigna un nombre de usuario, también se le asigna un directorio y a
éste directorio se le denomina “directorio base”, pudiendo estar localizado en cualquier parte de la
estructura de archivos UNIX. El sistema UNIX busca a lo largo del camino correcto hasta que ubica su
directorio base; cuando Ud. accesa al sistema UNIX, automáticamente es puesto en ese directorio. El
camino entre el directorio raíz y su directorio base es un ejemplo de “pathname”.
 En la medida que Ud. continúe trabajando en su directorio base, éste se considera su “ directorio de
trabajo “ o “ directorio actual ”.
 Si cambia a otro directorio, este nuevo directorio se convierte en su nuevo directorio actual.
 Al directorio actual se le representa con un punto ( . ) y es denominado también “ directorio hijo “
 El directorio del cual parte o al cual pertenece este último, denominado a su vez “directorio padre”, se
representa con dos puntos ( .. ).
 Ud. puede navegar a través de la estructura de archivos especificando la “trayectoria absoluta” (o
“trayectoria completa”), o la “trayectoria relativa” de un archivo.
 Una trayectoria absoluta o completa es el camino hacia un archivo empezando en el directorio raíz.
 Una trayectoria relativa es el camino hacia un archivo relativo a su directorio actual o de trabajo.
/
(root)
stand
sbin
dev etcunix
term
console
home
jose maria
tmp
var
usr
bin
lib
sbin
ls cat
= Directorios
= Archivos Ordinarios
= Archivos Especiales
= Enlaces
Figura No. 4: Jerarquía del Sistema Operativo UNIX
13. DESCRIPCION DE DIRECTORIOS IMPORTANTES
/bin Contiene programas ejecutables y utilitarios propios del sistema.
/dev Contiene archivos especiales que representan dispositivos periféricos como la consola,
impresora, terminales, discos, cintas.
/etc Contiene programas y archivos que UNIX utiliza para su administración.
/lib Contiene librerías para programas y lenguajes (compiladores). Es un enlace simbólico
con el directorio ‘ /usr/lib ‘, y es creado para compatibilidad con versiones anteriores
de UNIX.
/tmp Contiene archivos temporales que pueden ser creados por cualquier usuario o el mismo
sistema operativo.
/usr Contiene archivos, programas, o utilitarios que son adicionales a los del sistema
operativo.
JDCM UNIX SVR4 - NB 9
/hinv Contiene archivos de configuración de hardware. Sistema de archivos propio de
UNISYS.
/home Directorio por defecto para los directorios de los usuarios.
/proc Punto de montaje para otro tipo de sistema de archivos. Los archivos aquí contenidos
representan los procesos en ejecución en memoria y su nombre es el número de
identificación del proceso.
/sbin Contienen los programas requeridos por el comando ‘ init ‘ para el proceso de carga o
para recuperación a partir de una falla del sistema. También contiene los comandos
administrativos para el modo mono_usuario.
/stand Punto de montaje para el sistema de archivos de carga (bfs).
E. ACCESO AL SISTEMA UNIX
01. QUE ES NECESARIO?
 Un terminal con las siguientes características:
 Debe estar en línea.
 Configurado a:
 FULL DUPLEX.
 NO PARITY.
 BAUD RATE (acorde con el computador).
 Generar letras minúsculas siempre.
 Se define con la variable TERM:
 TERM=tipo_de_terminal
 Se hace que el sistema la reconozca para toda la sesión de trabajo con:
export TERM
 Un nombre para acceso (login) mediante el cual el sistema UNIX lo identifique como usuario
autorizado.
 Una palabra clave (password) que verifique su identidad.
02. CONVENCIONES GENERALES
 Los comandos deben ser ingresados en minúsculas (a menos que se especifique lo contrario)
 Existen caracteres especiales simples:
• # para borrar un caracter
• @ para borrar una línea entera
 o compuestos: xiii
### ^d CTRL d, salir del sistema
### ^s / ^q CTRL s / CTRL q, XON/XOFF
### ^h CTRL h, borrar caracter
### ^u CTRL u, borrar línea
### ^c CTRL c, interrumpir la ejecución del comando
 o teclas especialmente etiquetadas:
• CR Termina una línea y posiciona el cursor en una nueva línea.
• ESC Realiza una función específica al usarse con otra tecla.
• DEL Anula la línea de comando actual.
• BREAK Detiene la ejecución de un comando o programa.
 Los nombres para login deben ser de 3 a 8 caracteres, en minúsculas e iniciándose siempre por una letra,
sin símbolos. Cada vez que desee ingresar al sistema debe usarlo. La expresión “ login “ se deriva del
hecho que el sistema mantiene un “ log “ por cada usuario que ingresa al sistema. La línea que aparece
en el terminal:
JDCM UNIX SVR4 - NB 10
login:
indica que el sistema está esperando su ingreso al mismo.
 El nombre para los password debe seguir las siguientes normas:
 De 6 a 8 caracteres, pero su longitud se puede definir en el archivo ‘/etc/default/passwd’.
 Por lo menos dos caracteres alfanuméricos (mayúsculas o minúsculas) y por lo menos 1 caracter
especial o numérico.
 Debe ser diferente del login incluso, no debe ser el inverso o rotación de éste. Para la verificación,
mayúsculas y minúsculas son lo mismo.
 Por razones de seguridad, el sistema UNIX no muestra este nombre en pantalla. Aparece
inmediatamente después que ha ingresado el login:
login: empleado CR
password:
F. LINEAS DE COMANDO
01. INTRODUCCION
 Un programa es un conjunto de instrucciones para el computador.
 Todos aquellos programas que puede ejecutar el computador sin necesitar transformación previa se
denominan archivos ejecutables o comandos.
 El sistema UNIX le brinda muchos programas estandard y herramientas con los cuales Ud. puede:
 Procesar textos (editarlos).
 Manejar información esto es, organizar el filesystem.
 Transmitir y/o recibir información de otros sistemas (comunicación electrónica).
 Desarrollar software (establecer ambiente para programación amigable).
 Accesar a utilitarios adicionales (para gráficos o cálculos).
02. SINTAXIS O COMO EJECUTARLOS
 Con el fin de que sus requerimientos sean comprensibles para el sistema UNIX, Ud. debe presentar cada
comando en el formato o sintaxis de comando correcto.
 La sintaxis define el orden en el que debe ingresar los componentes de una línea de comando:
comando opcion(es) argumento(s)
donde:
• comando Es el nombre del comando/programa que se desea ejecutar
• opción Modifica la forma en que el comando se ejecuta (usualmente precedido por
“ - “).
• argumento Especifica la información sobre la que opera ese comando.
 Las palabras que componen un comando completo se separan por lo menos con un blanco (un espacio o
una tabulación).
 Si un argumento contiene blancos debe encerrarlo entre comillas.
 Algunos comandos le permiten especificar múltiples opciones y/o argumentos en una línea de
comandos.
 Las opciones deben estar separadas por un guión ( - ) y espacios en blanco entre ellas.
 O por lo menos un guión y las demás opciones juntas, sin espacios en blanco ni guiones.
Ejemplo:
incorrecto correcto
wcfile wc file
JDCM UNIX SVR4 - NB 11
wc-lfile wc -l file
wc -l w file wc -l -w file
wc file1file2 wc file1 file2
03. COMO EJECUTA EL SISTEMA UNIX UN COMANDO
USUARIO SHELL KERNEL PROGRAMAS
COMANDOS
UTILITARIOS
ETC.
Figura No. 7: Funcionamiento del shell
 Luego de presionar la tecla CR para ejecutar un comando, el shell:
 Chequea que exista el comando.
 Chequea los permisos.
 Analiza los argumentos y opciones de la línea de comando.
 Inicia el proceso.
 Al terminar vuelve al prompt.
H. EDITORES DE TEXTOS
01. INTRODUCCION
 Un editor de textos realiza las tareas de insertar, adicionar, borrar o transponer textos y finalmente,
preparar una copia limpia y corregida de éstos logrando que su escritura y revisión sea mucho más fácil
y rápida que si se hiciera manualmente.
 Para el sistema UNIX, los editores de textos son programas interactivos que aceptan comandos propios
y luego realizan las funciones requeridas.
02. COMO TRABAJAN
 Tan pronto como un editor es invocado éste separa un espacio de trabajo temporal denominado “buffer
de edición” y cualquier información que pueda ingresar mientras se edita un archivo, se almacena en
este buffer donde puede modificarse.
 No importa si Ud. crea o actualiza un archivo, el texto dentro del buffer está organizado en líneas que
son simplemente una serie de caracte-res que aparecen horizontalmente en la pantalla y terminan cuando
presiona la tecla RETURN.
 Se diferencian dos modos de operación: de comando y de operación.
 Cuando se inicia una sesión de edición, ésta comienza en modo comando pero sólo puede modificar,
adicionar o crear un texto en el modo texto y en este modo, todos los caracteres que tipee se colocan en
el buffer como parte de su archivo texto.
 El editor de líneas es muy rápido. Manipula texto línea por línea de modo que se necesita especificar el
número de la línea que desea trabajar.
 El editor de pantalla es una herramienta interactiva orientada a la visualización de un texto en toda la
pantalla, página por página. Esto permite posicionar el cursor en cualquier punto de la pantalla en donde
se quiera modificar algo, logrando resultados inmediatos. Este editor consume recursos del computador:
JDCM UNIX SVR4 - NB 12
procesador (debido al reformateo de la pantalla por cada cambio realizado), disco (ya que genera
archivos intermedios para su trabajo), si los cambios son mayores.
03. EDITOR ‘ed’
a) INGRESO Y SALIDA DEL EDITOR
Ingresamos:
$ed archivo
Aparece:
• ? archivo Si no existe, indicando que es nuevo.
• xxx Donde ‘xxx’ es el número de bytes existentes en el archivo.
Salimos:
• q En modo comando.
b) CARACTERISTICAS GENERALES
 Pasamos a modo comando al presionar “ . “ como único caracter en la línea.
 Guardamos el texto en el archivo especificado al presionar “ w “ como único caracter en la
línea.
 En general, todo comando debe ser ingresado solo, como único caracter en la línea.
 El editor no indica en qué modo se está trabajando a menos que se ejecute el comando “P” el
cual muestra un “ * “ cada vez que se ingresa al modo comando.
 Si deseamos cambiar el “ * “ (prompt), lo podemos hacer en el momento que invocamos el
editor y usamos la opción:
“ -p “ (este prompt puede ser uno o varios caracteres)
$ed -p prompt archivo
 Un comando ‘ed’ consta de hasta 3 componentes:
posición comando opción
donde la posición se refiere a la línea (o líneas) sobre las que se desea trabajar. Si no se
especifican líneas, la operación se realiza sobre la línea actual en el buffer (la última en la que
se estuvo trabajando).
 Dos líneas separadas por una coma se interpreta como un rango de líneas.
 Cuando una sesión de edición termina anormalmente, el sistema operativo UNIX trata de salvar
el contenido del buffer de edición en el archivo ‘ed.hup’ en el directorio de trabajo.
c) COMANDOS PROPIOS
• [.]a Adiciona líneas tras la actual.
• [.,.]c Modifica un rango de líneas.
• [.]i Inserta líneas delante de la actual.
• [.,.]p Muestra un rango de líneas.
• . Indica la línea actual en modo comando o, pasa de modo texto a modo comando.
• $ Indica la última línea.
• ! cmnd Ejecuta un comando externo en forma temporal.
Ejemplos:
3i Ingresa al modo texto e inserta un texto digitado antes de la línea 3.
8c Ingresa al modo texto y reemplaza la línea 8 por otro texto digitado.
1,5c Ingresa al modo texto y reemplaza las líneas 1 a la 5.
5p Muestra la línea 5.
2,6p Muestra las líneas 2 a la 6.
$c Ingresa al modo texto y cambia el texto de las líneas 10 hasta el final del archivo.
!ls Muestra el contenido del directorio actual y retorna al editor. La salida de este comando no es
parte del archivo que se edita.
JDCM UNIX SVR4 - NB 13
d) OTROS COMANDOS
• 1,$p Muestra todo el archivo.
### ,p Igual al anterior.
• .,$p Muestra el contenido del archivo entre la línea actual ( . ) y la última línea ( $ ).
• n Muestra la línea y el número de la línea actualmente en el buffer.
• 1,$n Muestra todas las líneas con número de línea.
### = Muestra el número de líneas del buffer.
### + o RETURN, pasa a la siguiente línea, mostrándola.
### - Pasa a la línea anterior, mostrándola.
• l Muestra caracteres visibles y no visibles de la línea actual.
• [.,.]mn Mueve el rango de líneas especificado por [.,.] después de la línea ‘n’.
• [.,.]tn Copia las líneas especificadas por [.,.] después de la línea n.
• [.,.]d Remueve las líneas especificadas por el rango [.,.].
### /texto/ Búsqueda del “texto”xiv
hacia adelante.
### / Siguiente ocurrencia xv
hacia adelante del “texto” previamente establecido.
• ?texto? Búsqueda del “texto” hacia atrás.
• ? Siguiente ocurrencia hacia atrás del “texto” previamente establecido.
• [.,.]s/antiguo/nuevo/
Sustitución simple de la primera ocurrencia en la línea del texto “antiguo” por el
“nuevo”.
• [.,.]s/antiguo/nuevo/g
Sustitución global del texto “antiguo” por el “nuevo” en la línea.
• [.,.]s/antiguo/nuevo/p
Muestra el resultado de la sustitución del texto “antiguo” por el “nuevo”.
• u Deja sin efecto el último comando efectuado.
• H Causa que automáticamente se muestre un mensaje de error cada vez que aparece
“ ? “.
• h Causa que se muestre un mensaje de error explicando la razón del “ ? “ más reciente.
• [1,$]w[archivo]
Graba el contenido del buffer actual en un “archivo” diferente al original.
Ejemplos:
.= Muestra el número de la línea actual
m4 Mueve la línea actual después de la línea 4
$m0 Mueve desde la línea 5 hasta la última hacia el inicio del archivo
1,4t10 Copia las líneas 1 a 4 colocándolas después de la línea 10
+3p Muestra las 3 líneas posteriores a la actual
5p Muestra las 5 líneas anteriores a la actual
5d Remueve la linea 5
5,6d Remueve las líneas 5 y 6
s/a 12/b 14/ Reemplaza la primera ocurrencia de “a 12” por “b 14” en la línea actual.
s2s/azul//g Borra todas las palabras “azul” de la línea 2.
$s/azul/mar/gp xvi
Reemplaza todas las ocurrencias de la palabra “azul” por la palabra “mar” y muestra los resultados.
04. EDITOR ‘vi’ - PARTE I
a) INGRESO Y SALIDA DEL EDITOR
Ingresamos:
$vi archivo
Aparece:
~
~
.
.
.
~
“archivo” [New file]
JDCM UNIX SVR4 - NB 14
Salimos:
### :q Pasamos a modo comando y digitamos ‘ q ‘ seguido de CR.
b) CARACTERISTICAS GENERALES
 Pasamos a modo comando al presionar ESC.
 Invocamos a la línea de comando con “ : “ (siempre aparece en la última línea).
 Guardamos la información con la siguiente secuencia:
ESC + “ : “ + “ w “
 Utiliza toda la pantalla, el cursor aparece en la columna superior izquierda, llena la pantalla con
tildes ( ~ ) indicando que no hay información.
 Al igual que el editor `ed`, `vi` nos proporciona una forma de distinguir entre el Modo
Comando y el Modo Texto:
$vedit archivo
el editor muestra el modo de operación en la esquina inferior derecha de la pantalla.
 Depende de las características específicas y capacidades de cada terminal.
 Cuando una sesión termina anormalmente, UNIX salva el contenido del buffer de edición en
un archivo en el directorio de trabajo teniendo el mismo nombre que el archivo de trabajo. Se
recupera con la opción siguiente:
vi -r nombre_de_archivo
c) COMANDOS BASICOS
(1) ADICION E INSERCION DE TEXTO
• a Adiciona caracteres a la derecha del cursor.
• A Adiciona caracteres después del último caracter de la línea.
• i Inserta caracteres antes del cursor.
• I Inserta caracteres al inicio de la línea.
• o Abre una línea en blanco bajo la línea actual.
• O Abre una línea en blanco sobre la actual.
Ejemplos:
Texto original : Una línea de texto
Adicionamos : xxzz
Cursor ubicado en : ‘e’ de ‘línea’
Comando Resultado
a Una línexxzza de texto
A Una línea de textoxxzz
i Una línxxzzea de texto
I xxzzUna Línea de texto
o Una línea de texto
xxzz
O xxzz
Una línea de texto
(2) BORRADO DE TEXTOS
• e Del cursor al final de la palabra.
• w Del cursor al inicio de la palabra.
• $ Del cursor al final de la línea.
• 0 Del caracter antes del cursor hasta el inicio de la línea.
• b Del caracter antes del cursor hasta el inicio de la palabra.
• [n] Número de caracteres a borrar hacia la derecha (x) o izquierda (X).
• xp Intercambia el caracter bajo el cursor por el de su derecha.
JDCM UNIX SVR4 - NB 15
d) MOVIMIENTO DEL CURSOR
(1) MOVIMIENTOS BASICOS DEL CURSOR
• [n]k Mueve el cursor ‘ n ‘ líneas hacia arriba.
• [n]j Mueve el cursor ‘ n ‘ líneas hacia abajo.
• [n]G Mueve a la línea ‘ n ‘
• H A la primera fila, primera columna de la pantalla.
• G A la última línea del archivo.
• M A la mitad de la pantalla.
• L A la última línea de la pantalla.
• CTRL b Muestra página anterior.
• CTRL f Muestra siguiente página.
• CTRL d Mueve 12 líneas hacia abajo.
• CTRL u Mueve 12 líneas hacia arriba.
• CTRL g Muestra la línea actual, el número total de líneas del archivo y el porcentaje
que esta línea representa del total.
(2) MOVIMIENTO DENTRO DE UNA PANTALLA
• nH Mueve el cursor hacia la línea ‘ n ‘ contada desde la línea superior de la
pantalla.
• nL Mueve el cursor hacia la línea ‘ n ‘ contada desde la línea inferior de la
pantalla.
###^E Baja la ventana una línea.
###^Y Sube la ventana una línea.
###^L Blanquea y redibuja la pantalla.
(3) MOVIMIENTO DENTRO DE LINEAS
• 0 Cero al inicio de la línea.
###^ Primer caracter de la línea actual (ignora espacios y tabulaciones).
• $ Al final de la línea.
• CR Inicio de la línea siguiente.
###+ Inicio de la línea siguiente (en el primer caracter no blanco).
###- Inicio de la línea anterior (en el primer caracter no blanco).
• w Una palabra hacia adelante.
• b Una palabra hacia atrás.
• [n]h Mueve el cursor ‘ n ‘ caracteres a la izquierda.
• [n]l Mueve el cursor ‘ n ‘ caracteres a la derecha. Igual a la barra espaciadora.
###^D Resetea el margen izquierdo de una autoedición.
(4) MOVIMIENTO POR BLOQUE DE TEXTO
• e Fin de palabra.
• E Fin de palabra (ignorando puntuación).
• b Retrocede una palabra.
• B Retrocede una palabra, ignorando puntuación.
• w Adelanta una palabra.
• B Adelanta una palabra, ignorando puntuación.
###// Dos slashes: repite la última búsqueda.
(5) MODIFICAR TEXTO
• D Borra desde el cursor hasta el final.
• dd Borra toda la línea incluyendo el CR.
• [n]c[rango] Modifica el texto que se especifica en “rango”, el número de líneas
especificado en ` n `.
• cc Cambia toda la línea sin el CR.
• [n]yy Copia las líneas especificadas por ` n ` a un buffer temporal.
• [n]Y Igual que ` yy `.
• p Copia la(s) línea(s) del buffer temporal debajo de la línea actual.
• P Copia la(s) línea(s) del buffer temporal encima de la línea actual.
• CR En el modo texto parte la línea a partir del caracter sobre el que está el cursor.
• J Une dos líneas.
• u Deshace el comando anterior.
• U Deshace todos los comandos dados a la línea actual.
JDCM UNIX SVR4 - NB 16
###/patrón Busca hacia adelante el patrón indicado.
###/ La siguiente ocurrencia hacia adelante del texto anterior.
###/patrón/- Posiciona el cursor en el inicio de la línea sobre ‘patrón’.
###/patrón/+2 Posiciona el cursor dos líneas por debajo de ‘patrón’.
• ?texto Busca hacia atrás el texto indicado.
• ? La siguiente ocurencia hacia atrás del texto anterior.
• n Repite el comando de búsqueda en la dirección previamente especificada.
• s Sustituye caracteres (actúa igual al comando ‘ cl ‘).
• S Sustituye líneas (actúa igual al comando ‘ cc ‘).
• N Repite el comando de búsqueda en la dirección opuesta.
###:wCR Graba el archivo.
###:qCR Sale del editor.
###:wqCR Graba el archivo y sale del editor.
###:q!CR Sale del editor sin grabar nada.
• r Reemplaza el caracter bajo el cursor.
• R Reemplaza un texto a partir del cursor (hasta presionar la tecla Escape:
ESC).
• n- Corre ‘ n ‘ columnas a la izquierda.
• n- Corre ‘ n ‘ columnas a la derecha.
• mx Marca la posición del cursor con el caracter especificado por ‘ x ‘.
• ‘x Acento grave: mueve el cursor a la posición marcada por ‘ x ‘.
• d`x Acento grave: borra desde el cursor hasta (pero no incluyendo) la posición
marcada uniendo las líneas parciales restantes.
• d’x Apóstrofe: borra todas las líneas completas desde donde está el cursor hasta
incluir la posición marcada.
(6) COMANDOS ‘:’
###:e [file] Blanquea el buffer y carga “ file “ en el buffer (edita otro archivo).
###:r [file] Inserta “ file “ debajo de la línea donde se encuentra el cursor.
###:r!cmd Carga la salida de un comando shell en el texto y donde está ubicado el cursor.
###:!cmd Ejecuta un solo comando shell y luego retorna al editor.
###:n Edita el siguiente archivo de la lista.
###:g/x/cmd Ejecuta un comando ‘ ed ‘ en todo lo que concuerde con ‘ x ‘.
###:m,nwfile Adiciona líneas desde la ‘ m ‘ hasta la ‘ n ‘ al ‘ file ‘.
###:m,nm# Mueve las líneas desde la ‘ m ‘ hasta la ‘ n ‘ después de la línea ‘ # ‘.
###:m,nco#/m,nt#
Copia las líneas desde la ‘ m ‘ hasta la ‘ n ‘ después de la línea ‘ # ‘.
(7) BUSQUEDA Y REEMPLAZO TOTAL
###:[.,.]s/texto_antiguo/texto_nuevo/opciones
Sustituye el “texto_antiguo” por el “texto_nuevo” dentro del rango
especificado. Las opciones son las del editor ‘ ed ‘.
###:1,30s/texto1/texto2/gc
Pide confirmar cada reemplazo (si se acepta se presiona ‘ Y + CR ‘, para
ignorar se presiona sólo CR.
###:s/est.e/este Asumiendo que ‘est007e’ sea lo primero, se remueve ‘007’.
###:%s/texto1/texto2/g
Busca todas las líneas y reemplaza todas las ocurrencias de ‘texto1’ por
‘texto2’.
###:g/texto1/s//texto2/g
Busca el patrón ‘texto1’ en forma global, luego reemplaza toda ocurrencia de
este ‘texto1’ por ‘texto2’ en las líneas encontradas.
###:g/texto1/s/texto2/texto3/g
Busca el patrón ‘texto1’ en forma global, luego reemplaza toda ocurrencia de
‘texto2’ por ‘texto3’ en las líneas encontradas.
###:.,+3 Muestra desde la línea actual ( . ), 3 líneas más. Si se usa el signo negativo,
serán 3 líneas menos.
###:1,$s Busca en todas las líneas del archivo.
###:%s Igual al anterior.
JDCM UNIX SVR4 - NB 17
COMANDOS BASICOS
A. MANEJO DE DIRECTORIOS Y ARCHIVOS
01. Comando ‘pwd’
Propósito:
Mostrar el nombre del directorio de trabajo.
Sintaxis:
/usr/bin/pwd
Opciones:
Ninguna
Consideraciones:
Ninguna
Ejemplo:
$ pwd
/usr/lib
02. Comando ‘ls’
Propósito:
Mostrar el contenido de uno o más directorios.
Sintaxis:
/usr/bin/ls [-RalFs] { nombres }
Opciones:
• R Muestra sucesivamente todos los subdirectorios encontrados.
• a Lista todas las entradas, incluso aquellas que empiezan con ( . ), normalmente ocultas.
• l Listado detallado.
• F Pone un ( / ) después de cada nombre de archivo si éste es un directorio o un ( * ) si es un
archivo ejecutable.
• s Proporciona el tamaño en bloques, incluyendo bloques indirectos.
Consideraciones:
 La salida está sorteada alfabéticamente por defecto.
 Cuando no se da el argumento (‘nombres’ en este caso), se trabaja sobre el directorio actual.
 La salida detallada incluye (todo esto por cada archivo mostrado):
1. Modo
2. Número de enlaces ó número de nombres con que se le reconoce en todo el sistema
3. Nombre del propietario
4. Nombre del grupo de trabajo al cual pertenece el propietario
5. Tamaño en bytes
6. Fecha y hora en que el archivo fué modificado por última vez
7. Nombre del archivo.
 El ‘modo’ consiste en 10 caracteres.
 El primero puede ser uno de los siguientes:
• d Si la entrada es un directorio
• b Si la entrada es un archivo especial de acceso por bloques.
JDCM UNIX SVR4 - NB 18
• c Si la entrada es un archivo espe-cial de acceso por caracter.
• p Si la entrada es un archivo especial FIFO (denominado ‘pipe’).
### - Guión, si la entrada es un archivo ordinario.
 Los siguientes 9 caracteres se interpretan como conjuntos de 3 bit cada uno.
 El primer conjunto se refiere a los permisos del propietario sobre el archivo.
 El segundo conjunto se refiere a los permisos de los demás componentes del grupo de trabajo
sobre este archivo.
 El tercer grupo se refiere a todos los demás usuarios que no son propietarios ni pertenecientes al
mismo grupo de trabajo.
 Dentro de cada conjunto, los tres caracteres indican permisos para:
• r leer
• w modificar
• x ejecutar
### - no se brinda permiso alguno
Ejemplo:
$ ls -la
total 9
drwxr-xr-x 2 stu2 stud 480 Aug 30 10:25 letra
-rw-r—r-- 1 stu2 stud 264 Sep 05 09:37 memo
-rw-rw-rw- 1 stu2 stud 230 Aug 25 09:50 .carta
03. Comando ‘mkdir’
Propósito:
Crear un directorio.
Sintaxis:
/usr/bin/mkdir [-p] { nombre_de_directorio }
Opciones:
• p Se crea el ‘nombre_de_diretorio’ solicitado creando antes todos los directorios padres
necesarios.
Consideraciones:
 Las entradas estandard en un directorio (archivo ‘ . ‘ para el mismo directorio y ‘ .. ‘ para el
directorio padre) se hacen automáticamente.
 Este comando no las puede crear por nombre.
 Se requiere tener permiso en el directorio padre para crear un directorio.
 Si se trata de crear un directorio con la opción ‘-p’ y éste existe, se envía un mensaje de error.
Ejemplo:
$ mkdir user1 Crea el directorio ‘user1’ debajo del directorio de trabajo
actual
$ mkdir -p /usr1/user3 Crea el directorio ‘usr1’ y luego el directorio ‘user3’,
asumiendo que ninguno exista.
04. Comando ‘rmdir’
Propósito:
Remover un directorio (vacío).
Sintaxis:
/usr/bin/rmdir [-p] { nombre_de_directorio }
Opciones:
• p Permite la remoción del directorio ‘nombre_de_directorio’ y sus directorios padres.
JDCM UNIX SVR4 - NB 19
Consideraciones:
 Usando la opción ‘-p’ se imprime un mensaje indicando si parte o toda la trayectoria es removida
o permanece por alguna razón (no tiene permiso de escritura, no pertenece al usuario).
Ejemplo:
$ rmdir /usr/acct/user1
05. Comando ‘rm’
Propósito:
Removemos archivos.
Sintaxis:
/usr/bin/rm [-fir] { archivo / directorio }
Opciones:
• f Ocasiona la remoción de todos los archivos (protegidos o no) sin notificar al usuario. No se
remueven los archivos de un directorio protegido.
• i Se pide confirmación para la remoción de un archivo protegido en forma interactiva.
• r Ocasiona la remoción de todos los directorios y subdirectorios de la lista de argumentos.
Consideraciones:
 Con la opción ‘ -r ‘ primero se borran los archivos contenidos en el directorio especificado y luego
se borra éste.
 Se pide confirmación cuando se remueve cualquier archivo protegido.
 La confirmación se inactiva cuando se utiliza la opción ‘ -f ‘.
 No se pueden borrar los directorios ‘ . ‘ ni ‘ .. ‘.
 Un directorio/archivo está protegido cuando no tiene permiso de modificación (escritura) o cuando
no pertenece al usuario.
Ejemplo:
$rm -r /usr1/local
$rm -f /usr1/local/prg
$rm [A-Z]file*.cob
06. Comando ‘cd’
Propósito:
Cambiamos de un directorio de trabajo a otro.
Directorio de residencia:
Comando interno del shell.
Sintaxis:
cd {directorio}
Opciones:
Ninguna
Consideraciones:
 Si no se especifica ‘directorio’ se utiliza el directorio base como directorio de trabajo es decir, se
retorna al directorio base desde cualquier directorio donde se encuentre.
 Si se especifica ‘directorio’, éste se convierte en el nuevo directorio de trabajo.
Ejemplo:
JDCM UNIX SVR4 - NB 20
$ pwd
/usr/acct/user1
$ cd /usr/lib/ter2
$ pwd
/usr/lib/ter2
$ cd
$ pwd
/usr/acct/user1
Muestra directorio actual
Cambio a otro directorio de trabajo
Muestra nuevo directorio de trabajo
Cambia a directorio original
Confirma el cambio
07. Comando ‘cp’
Propósito:
Copiar archivos.
Sintaxis:
/usr/bin/cp [opciones] [full_pathname/ [full_pathname/
archivo_fuente] archivo_destino]
Opciones:
• i Pide confirmación antes de sobreescribir en un archivo_destino.
• r Si el archivo_fuente es un directorio, lo copia así como a sus archivos, incluyendo
subdirectorios.
Consideraciones:
 Las respuesta posibles son: Y para SI y cualquier otro caracter para NO.
 Si el “archivo_destino” existe, es reemplazado por el “archivo_fuente”.
 Dentro de un mismo directorio, “archivo_fuente” y “archivo_destino” deben tener nombre
distinto.
 Si el archivo_fuente es un directorio, el archivo_destino también debe serlo y deben encontrarse
en el mismo sistema de archivos.
 Si el archivo_destino es un archivo, su contenido se sobreescribe pero el modo, propietario, y
grupo asociados no cambian pero sí el tiempo de modificación y acceso.
Ejemplo:
$cp -r /usr1/file1 /usr2
$cp -i
cp: overwrite /usr2/file5?
/usr1/file1 /usr2/file5
$cp file1 file4
08. Comando ‘mv’
Propósito:
Mover o renombrar archivos.
Sintaxis:
/usr/bin/mv [-fi] { archivo_fuente } { archivo_destino }
Opciones:
• f Renombra el “archivo_fuente” sin importar sus permisos.
• i Pide confirmación antes de renombrar un archivo existente.
Consideraciones:
 Las respuesta posibles son: Y para SI y cualquier otro caracter para NO.
 Dentro de un mismo directorio no puede haber dos archivos con el mismo nombre.
 Si existen “archivo_destino” y “archivo_fuente”, éste último reemplaza al primero.
 Si se determina que los permisos del “archivo_destino” prohíben su modificación, el comando
muestra estos permisos requiriendo una respuesta (sí o no).
JDCM UNIX SVR4 - NB 21
Ejemplo:
$mv /usr1/file1 /usr2
$mv file3 /usr1/file9
$mv /usr1/file3 /usr2/file5
09. Comando ‘file’
Propósito:
Identificar el tipo de archivo.
Sintaxis:
/usr/bin/file [-c] { argumento }
[-f archivo]
Opciones:
• c Causa que el comando revise los “argumentos” buscando errores de formato.
• f Ocasiona que se tome “archivo” como aquel que contiene los nombres de los archivos a ser
examinados (argumentos).
Consideraciones:
 Normalmente no se emplea la opción ‘ -c ‘ por razones de eficiencia.
 El comando lee cada argumento y distingue los siguientes tipos de archivos:
archivos de clasificación
datos data
shell scripts command text
ejecutables executable
programas texto xxx text
10. Comando ‘cat’
Propósito:
Mostrar el contenido de un archivo.
Sintaxis:
/usr/bin/cat [-sve] { archivo }
Opciones:
• s Elimina mensaje de error cuando no se encuentra algún archivo.
• v Muestra los caracteres no visibles normalmente (excepto tabuladores, saltos de página,
nuevas líneas).
• e Ocasiona que al final de la línea y antes del caracter de nueva línea se imprima un caracter
“ $ “.
Consideraciones:
 El comando lee cada archivo en secuencia y lo escribe en la salida estandard.
 Los caracteres de control ASCII (octal 000 - 037) se imprimen como ‘ ^n ‘, donde n es el caracter
ASCII correspondiente en el rango octal 100 - 137 es decir: @, A, B, .... ,X, Y, Z, [, , ], ^, _ .
 Para mostrar más de 23 líneas utilizar ^s, ^q
Ejemplo:
$ cat Texto
Imprime el contenido de “Texto” en pantalla
JDCM UNIX SVR4 - NB 22
11. Comando ‘pg’
Propósito:
Otra forma de mostrar el contenido de un archivo, esta vez formateado.
Sintaxis:
/usr/bin/pg [-p string -c +línea +/patrón/] { archivo }
Opciones:
• p string Por cada pantalla imprime ‘string’ al término de ésta.
• c Mueve el cursor a la posición (0,0), borra la pantalla antes de continuar.
• +línea Desde qué línea empieza a mostrar el archivo
• +/patrón/ Busca un patrón específico y muestra el archivo a partir de la primera ocurrencia del
‘patrón’.
Consideraciones:
 Permite visualizar el contenido de un archivo una pantalla a la vez.
 Cada pantalla es seguida por un prompt ‘string’ o el valor por defecto (default) ‘ : ‘.
 Se pasa de una pantalla a la otra presionando CR.
 Se termina la visualización presionando la tecla ‘ q ‘.
 Permite retroceder en la visualización del texto.
 Entre las respuestas que pueden darse cuando el comando ‘pg’ espera por ellas se encuentran:
• $ Muestra la última pantalla del archivo (las últimas líneas del archivo que
pueden contenerse en una pantalla).
###/patrón/ Busca hacia adelante la ocurrencia de ‘patrón’.
• ?patrón? Busca hacia atrás la ocurrencia de ‘patrón’.
• h Muestra un resumen abreviado de los comandos internos posibles.
• q Finaliza el comando
Ejemplo:
$ pg -p “Su comando?: “
----------------------------------
----------------------------
--------------------------------
------
Su comando?: q
$
12. Comando ‘head’
Propósito:
Muestra determinado número de líneas a partir del inicio del archivo.
Sintaxis:
/usr/local/bin/head [opciones] archivo(s)
Opciones:
• x Proporciona las primeras ‘ x ‘ líneas de los archivos especificados.
Consideraciones:
 Por default imprime siempre las primeras diez líneas.
Ejemplo:
(El archivo ‘cat21’ contiene las siguientes
líneas)
Línea No.1
Línea No.2
Línea No.3
Línea No.4
Línea No.5
Línea No.6
Línea No.7
Línea No.8
JDCM UNIX SVR4 - NB 23
$ head -4 cat21
Línea No.1
Línea No.2
Línea No.3
Línea No.4
13. Comando ‘tail’
Propósito:
Muestra determinado número de líneas o caracteres a partir del final del archivo.
Sintaxis:
/usr/bin/tail [opciones] archivo(s)
Opciones:
• +/- número Muestra +número desde el inicio o -número desde el final del archivo.
• lbc Cuenta en líneas, bloques o caracteres.
Consideraciones:
 Por default cuenta en líneas.
 El comando “tail” copia el “archivo” indicado a la salida estándard, empezando en el lugar
designado.
 El comando “tail” sólo mostrará los últimos 4096 bytes de un “archivo” sin importar su número
de líneas.
 Puede ocurrir un comportamiento extraño con archivos conteniendo caracteres especiales o
multibyte.
 Por default imprime siempre las últimas diez líneas.
Ejemplo:
(El archivo ‘cat21’ contiene las siguientes líneas)
Línea No.1 $ tail -2 cat21
Línea No.2 Línea No.3
Línea No.3 Línea No.4
Línea No.4
14. Comando ‘diff’
Propósito:
Muestra las diferencias entre archivos.
Sintaxis:
/usr/bin/diff [opciones] archivo1 archivo2
Opciones:
• b Ignora los espacios y tabulaciones tras el dato.
• e Produce un script conteniendo comandos del editor ‘ ed ‘ para hacer que archivo1 sea
idéntico al archivo2.
Consideraciones:
 Nos informa qué líneas deben cambiarse entre dos archivos de modo que sean idénticos.
 La salida normal contiene líneas que semejan la siguiente forma:
• n1 a n3,n4
• n1,n2 d n3
• n1,n2 c n3,n4
3. Estas líneas son comandos del editor ‘ ed ‘ para convertir el “archivo1” en “archivo2”.
 Los números después de las letras pertenecen al “archivo2”.
 Lo que sigue a estas líneas son las líneas afectadas en el “archivo1” etiquetadas con el caracter
‘  ‘ y les siguen las afectadas en el “archivo2” etiquetadas con el caracter ‘  ‘.
JDCM UNIX SVR4 - NB 24
Ejemplo:
$ cat group1
users:NONE:100:dcr,banco
ofis:700:ofis,demo,boss
curso:1001:user01,user02,user03
$ cat group2
ofis:700:ofis,demo,boss
curso:1001:user01,user02,user03
$ diff group1 group2
1d0
 users:NONE:100:dcr,banco
$ diff -e group1 group2
1d
$ diff group2 group1
0a1
 users:NONE:100:dcr,banco
$ diff -e group2 group1
0a
users:NONE:100:dcr,banco
.
15. Comando ‘wc’
Propósito:
Contar el número de líneas, palabras y caracteres que posee un archivo.
Sintaxis:
/usr/bin/wc [opciones] [archivos]
Opciones:
• l Muestra sólo el número de líneas.
• w Muestra sólo el número de palabras.
• c Muestra sólo el número de caracteres.
Consideraciones:
Ejemplo:
$wc times
8 52 1325 times
16. Comando ‘grep’
Propósito:
Búsqueda de un texto en un archivo.
Sintaxis:
/usr/bin/grep [opciones] expresión [archivos]
Opciones:
• c Muestra el número de líneas que concuerda con “expresión” en lugar del patrón mismo.
• l Muestra el(los) nombre(s) del(de los) archivo(s) cuyo contenido concuerda con “expresión”
(una sola vez).
• n Muestra el número de linea en que apare-ce alguna concordancia.
• i Trata mayúsculas y minúsculas por igual.
• v Muestra las líneas que no concuerdan con “expresión”.
• s Suprime los mensajes de error.
Consideraciones:
Ejemplo:
$ grep [Ff]inanciero reporte
$ grep [4-9]. reporte
$ grep -lc l[0-3] *
$ grep ” estado financiero$” reporte
$ grep ”^Resultados del campeonato” reporte
$ grep ’.pic’ archivo
JDCM UNIX SVR4 - NB 25
17. Comando ‘sort’
Propósito:
Ordenamiento de líneas de texto xvii
Sintaxis:
/usr/bin/sort [opciones] [campo.caracter] [archivos]
Opciones:
• b Ignora blancos al inicio.
• f Trata mayúsculas y minúsculas por igual.
• n Sort numérico.
• r Orden descendente.
• o ‘file’ Graba los resultados en “file”.
• t ‘carac’ “carac” es un caracter utilizado como separador de campo en el archivo a sortearse.
Consideraciones:
 Primero, se sortean los espacios en blanco.
 Segundo, se sortean los números iniciádose con el primer dígito del número (de 0 a 9).
 Tercero, se sortean las letras mayúsculas.
 Cuarto, se sortean las letras minúsculas.
Ejemplo:
$cat archivo $sort archivo $sort -n archivo
4980 12 4
12 4 12
40 40 40
4 4980 636
636 636 4980
8010 8010 8010
$cat archi1
Pedro Martinto:Las Acacias 328:223160
Miguel Pereira:Zona4, Lima:440624
Sandra Villavicencio: Poma de Ayala 1324, Lince: 512345
Sandra Villavicencio: Poma de Ayala 1324, Lince: 512331
Miguel Pereira: Zona 3, Lima:440634
Angel Martinelli:Los Eucaliptos 340: 475866
$sort -t: -b +2 archivo
Pedro Martinto:Las Acacias 328:223160
Miguel Pereira:Zona4, Lima:440624
Miguel Pereira: Zona 3, Lima:440634
Angel Martinelli:Los Eucaliptos 340: 475866
Sandra Villavicencio: Poma de Ayala 1324, Lince: 512331
Sandra Villavicencio: Poma de Ayala 1324, Lince: 512345
$sort -t: -b +1 -2 +2n archivo
Pedro Martinto:Las Acacias 328:223160
Angel Martinelli:Los Eucaliptos 340: 475866
Sandra Villavicencio: Poma de Ayala 1324, Lince: 512331
Sandra Villavicencio: Poma de Ayala 1324, Lince: 512345
Miguel Pereira: Zona 3, Lima:440634
Miguel Pereira:Zona4, Lima:440624
$sort -t: -b +2.4 -2.6 archivo
Miguel Pereira:Zona4, Lima:440624
Sandra Villavicencio: Poma de Ayala 1324, Lince: 512331
Miguel Pereira: Zona 3, Lima:440634
Sandra Villavicencio: Poma de Ayala 1324, Lince: 512345
Pedro Martinto:Las Acacias 328:223160
Angel Martinelli:Los Eucaliptos 340: 475866
18. Comando ‘cut’
Propósito:
Seleccionar parte de un texto.
JDCM UNIX SVR4 - NB 26
Sintaxis:
/usr/bin/cut [opciones] [archivos]
Opciones:
• c ‘lista’ Designa una ‘lista’ con las posiciones de caracteres a cortar:
• c1-40 Corta los primeros 40 caract.
• c1-3,7 Corta los 3 primeros y el 7mo.
• c20- Corta desde el 20mo.
• f ‘lista’ Designa una ‘lista’ de campos a cortar:
• f1,4 Corta el 1er y 4to campos.
• d ‘carac’ ‘carac’ identifica el caracter actúa como separador de campo.
Consideraciones:
Ninguna
Ejemplo:
$ ls -l | cut -c1-8
$cat archi1
$ cut -d’:’ -f2 archi1
Las Acacias 328
Zona4, Lima
Poma de Ayala 1324, Lince
Poma de Ayala 1324, Lince
Zona 3, Lima
Los Eucaliptos 340
19. Comando ‘find’
Propósito:
Búsqueda de archivos dentro del Sistema UNIX.
Sintaxis:
/usr/bin/find [trayectoria] [criterio de búsqueda] [acción]
Opciones: xviii
• atime n Selecciona los archivos que han sido accesados hace ‘n’ dias.
• mtime n Selecciona los archivos que han sido modificados hace ‘n’ dias.
• name file Selecciona todas las ocurrencias de ‘file’.
• print Muestra los archivos encontrados.
• user ID Busca los archivos que pertenecen al usuario con identificación ID (número de
usuario). Se puede buscar por nombre directamente.
• exec cmd {} ; Ejecuta el comando ‘cmd’, y las llaves representan cada archivo a evaluarse.
• size n[c] Selecciona los archivos cuya longitud es de ‘n’ bloques. La ‘c’ corresponde a
caracteres.
Consideraciones:
 Desciende recursivamente por la jerarquía de directorios de cada trayectoria incluída en la lista de
trayectorias.
 No olvidarse de la opción ‘print’ de lo contrario, no se mostrará lo que se busca o no se realizarán
las órdenes dadas.
Ejemplo:
$ find /usr/acct -name “*.0456” -print
$ find / -user juan -print
$ find -atime +10 -name ‘*.c’ -print -exec rm {} ;
$ find ( -mtime 5 -o -name ‘*.c’ ) -print
$ find /usr/ng /usr/mp -size -10000c -print
B. OTROS COMANDOS
JDCM UNIX SVR4 - NB 27
01. Comando ‘date’
Propósito:
Mostrar y/o fijar la fecha y hora del sistema.
Sintaxis:
/usr/bin/date [+formato]
/usr/bin/date [mmddHHMMaa]
Opciones:
Formato (precedido por %):
• D Fecha como mm/dd/aa
• H Hora (00 - 23)
• M Minuto (00 - 59)
• S Segundo (00 - 59)
• T Tiempo como hh:mm:ss
• Y Año en formato de 4 dígitos
• d Día del mes (01 - 31)
• m Mes del año (01 - 12)
• y Año de la centuria (00 - 99)
• n Inserta un caracter de nueva línea
Para fijar Fecha y Hora:
• mm Número de mes
• dd Número de día
• HH Número de hora (formato de 24 horas)
• MM Número de minuto
• yy Número de año (últimos 2 dígitos y es opcional)
Consideraciones:
 Si no se da un argumento, se muestra la fecha y hora actuales
 Si el argumento empieza con el signo más ( + ), la salida del comando está bajo control del
usuario.
 Todas las salidas son de tamaño fijo.
 Cada descriptor de campo se precede con el signo porcentaje ( % ) y es reemplazado (el descriptor)
en la salida por su correspondiente valor.
Ejemplo:
$ date
Wed May 27 18:12:56 EDT 1989
$ date ‘+FECHA:%m/%d/%y%nHORA:%H:%M:%S’
FECHA:08/01/91
HORA:14:05:09
02. Comando ‘cal’
Propósito:
Calendario electrónico.
Sintaxis:
/usr/bin/cal [mes] { año }
Opciones:
• mes Dato numérico entre 1 (enero) y 12 (diciembre).
• año Dato numérico entre 1 y 9999.
Consideraciones:
 Los años no deben abreviarse.
JDCM UNIX SVR4 - NB 28
 Se imprime el calendario del mes y/o año especificado.
Ejemplo:
$ cal 1 1988
(Muestra el calendario del mes de enero del año 1,988)
03. Comando ‘calendar’
Propósito:
Recordatorio de eventos.
Sintaxis:
/usr/bin/calendar
Opciones:
Ninguna
Consideraciones:
 Crear un archivo llamado “calendar” (en su directorio de trabajo). Este comando consulta este
archivo en el directorio de trabajo e imprime todas las líneas que contienen las fechas de “hoy” y
“mañana”.
 Cada línea debe contener una fecha en el formato mes - día.
 Si ejecuta el programa un viernes, aparecen los eventos del viernes, sábado, domingo y lunes.
 Formatos de fechas: October 10, Oct 10, 10/10.
04. Comando ‘banner’
Propósito:
Genera posters.
Sintaxis:
/usr/bin/banner { argumentos }
Opciones:
Ninguna.
Consideraciones:
 Los argumentos deben tener un máximo de 10 caracteres. Se imprime con letras grandes en la
salida estándard (usando el caracter ‘ # ‘).
 Los caracteres en exceso se ignoran.
Ejemplo:
$ banner UNIX
# # # # ### # #
# # ## # # # #
# # # # # # # #
# # # # # # #
# # # # # # # #
# # # ## # # #
#### # # ### # #
05. Comando ‘split’
Propósito:
Separo archivos grandes en pequeños.
JDCM UNIX SVR4 - NB 29
Sintaxis:
/usr/bin/split [opciones] archivo_fuente nombre_destino
Opciones:
• n Cantidad de líneas por las que separa el archivo (lo normal es 1000 líneas).
Consideraciones:
 El “archivo_fuente” se separa en archivos pequeños cuyos nombres empiezan con
“nombre_destino”.
 A estos pequeños archivos se les adiciona al nombre ‘ aa ‘ y así sucesivamente (en forma
lexicográfica), hasta la ‘ zz ‘.
 Se puede tener un máximo de 676 archivos pequeños a partir de uno grande.
 El “nombre_destino” no debe sobrepasar los 12 caracteres.
 Si no se especifica el “nombre_destino”, se utiliza la letra ‘ x ‘.
Ejemplo:
$ split -10 status chunk
$ ls
chunkaa
chunkab
chunckac
C. IMPRESION DE ARCHIVOS - PARTE I
01. Comando ‘lp’
Propósito:
Envía un listado al spooler.
Sintaxis:
/usr/bin/lp [opciones]
Opciones:
• d ‘printer’ Identifica una impresora.
• n x Imprime ‘x’ copias del listado.
• s Suprime mensajes (fecha, banner, etc.).
• t ‘título’ Imprime ‘título’ como título del listado.
• w Envía un mensaje al usuario cuando ha terminado la impresión. Si el usuario no está
logeado, se envía un correo.
Consideraciones:
 Los archivos se imprimen en el orden en que aparecen en la línea de comando.
 El comando ‘lp’ asocia una única identificación con cada requerimiento y lo imprime en la salida
estándard.
Ejemplo:
$ lp -dserial1 /usr/acct/pruebas/file1
$ lp -dlaser3 -n3 /usr/file3
$ lp -s -w /work/acct/administ/master.c
02. Comando ‘lpstat’
Propósito:
Muestra el estado general del spooler.
JDCM UNIX SVR4 - NB 30
Sintaxis:
/usr/bin/lpstat [opciones]
Opciones:
• d Muestra el destino default del sistema.
• s Muestra un estado resumido del sistema spooler.
• t Muestra toda la información del estado de todas las impresoras y del sistema spooler.
Consideraciones:
 Las opciones pueden aparecer en cualquier orden.
 Si no se dan opciones, el comando ‘lpstat’ imprime el estado de todos los requerimientos hechos a
la impresora principal (default).
Ejemplo:
$ lpstat -t
scheduler is running
system default destination: printer
device for printer: /dev/tty106
printer accepting requests since Mon Feb 4 15:37:10 1991
printer printer is idle. enabled since Wed Apr 3 11:01:59 1991. available
03. Comando ‘cancel’
Propósito:
Cancela un trabajo de impresión.
Sintaxis:
/usr/bin/cancel [identificación de trabajo spool] impresora
Opciones:
Ninguna
Consideraciones:
 La identificación del listado así como el nombre de las impresoras se obtiene con el comando
“lpstat”.
 Al especificar una “identificación de trabajo spool”, se cancela el trabajo asociado aún cuando
esté en impresión.
 Al especificar una “impresora” se cancela el trabajo que se está imprimiendo en esa impre-sora.
 En cualquier caso, la cancelación de un trabajo en ejecución libera la impresora para imprimir el
siguiente trabajo (a menos que se haya especificado una impresora en cuyo caso, ningún otro
trabajo será impreso hasta que se habilite la misma).
Ejemplo:
$ lp nombres
request id is pr1-398
$ cancel pr1-398
request “pr1-398” cancelled
D. MANEJO DE ACCESOS
01. CONSIDERACIONES EN LOS PASSWORD
 Todos los login ID deben tener asignado un password en el archivo ‘/etc/passwd’.
 Posibles excepciones son login ID simples o de un solo propósito como “who”.
JDCM UNIX SVR4 - NB 31
 Si existe un login ID pero no se requiere activarlo, puede protegerse editando el campo de password
correspondiente y colocando cualquier texto en él incluyendo espacios en blanco y asteriscos.
 El password debe tener por lo menos 6 caracteres aunque sólo los ocho primeros son significativos.
 Debe consistir de por lo menos dos caracteres alfanuméricos y por lo menos uno numérico o caracter
especial (mayúsculas o minúsculas).
 Debe ser diferente del login ID incluyendo formas inversas o circulares.
 El nuevo password debe diferenciarse del nuevo en por lo menos tres caracteres.
02. FACTORES PARA VIGENCIA DEL PASSWORD
 Editar el campo de password en el archivo ‘/etc/passwd’.
 Adicionar los valores de vigencia en el formato “,xy” donde:
• x Número máximo de semanas antes de requerir un cambio.
• y Número mínimo de semanas antes de permitir un cambio.
Ejemplo:
juan:gZZ6x3kTw9p49,42:130:100:J.P.:/usr/acct/juan:/bin/sh
esto es, no podrá cambiar su password en por lo menos 2 semanas y debe cambiarlo luego de 4 semanas.
a) ARCHIVO ‘/etc/passwd’
(1) PROPOSITO
 Es el archivo de control maestro que determina el acceso al Sistema Operativo UNIX.
 Es muy importante para la seguridad del sistema que sólo el administrador del mismo sea
el que modifique este archivo.
(2) DESCRIPCION
 Existen siete campos (separados por “:”) que forman un registro por cada usuario
identificado en el sistema y son, en orden:
• login Nombre de login, un máximo de 8 caracteres y en minúsculas.
• password Un máximo de 18 caracteres de los cuales los 13 primeros se
utilizan para el password encriptado (creado por el comando
“passwd”), tres caracteres para el período de vigencia de este
password y dos caracteres reservados para las rutinas del sistema.
• UID Es el número de identificación del usuario, mediante el cual el
sistema determina la propiedad y permisos de acceso. Deben
empezar desde 100 (los primeros 99 están reservados para la
administración del sistema y logins especiales) y no ser mayores
de 65,535.
• GID Número de identificación del grupo, mediante el cual el sistema
determina los permisos de acceso para el grupo. Deben
corresponder a las entradas en el archivo “/etc/group”.
• comment Hasta un máximo de 30 caracteres, que tradicionalmente se usan
para identificar al usuario.
• home_dir El nombre completo o absoluto del directorio base del usuario.
Debe existir antes que el usuario pueda ingresar al sistema.
• shell Es el nombre completo del archivo ejecutable (típicamente un shell
interactivo) que se ejecuta al momento que el usuario ingrese al
sistema.
Ejemplo:
usr1:gZZ6x3kTw9p49:130:100:user 1 ID:/usr/usr1:/bin/sh
b) ARCHIVO ‘/etc/group’
(1) PROPOSITO
 Permite la adición de usuarios a un grupo específico.
JDCM UNIX SVR4 - NB 32
(2) CARACTERISTICAS
 El nombre de usuario debe existir en el archivo /etc/passwd.
 Las entradas en este archivo son de la forma:
users::100:suzie,aldo,tomás,user1
 Los cuatro campos que lo forman son:
 Nombre de grupo.
 El password del grupo, normalmente no se utiliza.
 GID, número que identifica el grupo.
 Lista de miembros del grupo (separados por comas).
c) ARCHIVO ‘/etc/profile’
(1) PROPOSITO
 Fija las variables ambientales de todo el sistema.
(2) CARACTERISTICAS
 Es leído por el shell Burne.
 Muestra el mensaje del día.
 Notifica al usuario si tiene correo.
 Permite fijar las características estándares del terminal.
 Fija el valor “umask”.
 Permite ver las variables ambientales mediante los comandos “set” y “env”.
 El comando interno “env” muestra las variables que se exportan hacia ó por el shell.
 El comando interno “set” muestra todas las variables del sistema.
03. Comando ‘passwd’
Propósito:
Cambiar la palabra clave del usuario (password).
Sintaxis:
/usr/bin/passwd [-sdf] { login_de_usuario }
Opciones:
• s Para mostrar los atributos de password para el login_de_usuario.
• d Borra el password del login_de_usuario.
• f Fuerza el cambio de password en el siguiente acceso al sistema.
Mensajes:
• Old password:
• New password:
• Re-type new password:
Consideraciones:
 Los password se almacenan en el archivo ‘/etc/shadow’.:
 Debe ser diferente del login en por lo menos 3 caracteres..
 Por razones de seguridad, el sistema UNIX no muestra este nombre en pantalla.
 Sólo los super-usuarios pueden cambiar cualquier password.
 Un super-usuario puede crear un password nulo con sólo presionar CR en respuesta al
requerimiento por nuevo password.
 El formato de salida es el siguiente:
login estado mm/dd/aa min max aviso
Donde:
• login Login del usuario.
JDCM UNIX SVR4 - NB 33
• estado PS: con password
LK: bloqueado
NP: sin password
• mm/dd/aa Fecha de último cambio.
• min Mínimo número de días entre cambios de password.
• max Máximo número de días en que el password es válido.
• aviso Días de aviso antes que el password expire.
Ejemplo:
$ passwd ernesto
old password:
new password:
re-type new password:
# passwd carlos
new password:
re-type new password:
Curso: Unixware
JDCM UNIX SVR4 - NB 35
04. Comando ‘chown’
Propósito:
Modificar la propiedad de un archivo o directorio.
Sintaxis:
/usr/bin/chown [-R] { destino }
Opciones:
• R Desciende por la estructura del directorio y efectúa el cambio indicado en forma recursiva.
Consideraciones:
 El usuario debe tener acceso a su directorio base y puede mantener su propio ambiente de trabajo.
Ejemplo:
Cambiamos la propiedad:
# chown memo /usr/acct/memo
05. Comando ‘id’
Propósito:
Muestra los nombres e identificaciones de usuario y grupo.
Sintaxis:
/usr/bin/id [-a]
Opciones:
• a Reporta todos los grupos a los que pertenece el usuario.
Consideraciones:
 La información se toma del archivo ‘/etc/passwd’
Ejemplo:
$ id
uid = 101(user1) gid = 100(grp100)
$ id -a
uid = 101(user1) gid = 100(grp100) groups = 100(grp100). 300(grp300)
06. Comando ‘groups’
Propósito:
Muestra a qué grupos pertenecen los usuarios.
Sintaxis:
/usr/bin/groups
Opciones:
Ninguna
Consideraciones:
 La primera salida pertenece al grupo primario identificado en el archivo ‘/etc/passwd’.
 Las otras entradas muestran a qué otros grupos se pertenece, según el archivo ‘/etc/group’.
Ejemplo:
$ groups grp100 grp100
JDCM UNIX SVR4 - NB 36
$ groups user2
grp100 grp200
$ groups user2 user3
user2: grp100 grp200
user3: grp100 grp300
07. Comando ‘chgrp’
Propósito:
Modificar el grupo de trabajo.
Sintaxis:
/usr/bin/chgrp [-R] { destino }
Opciones:
• R Desciende por la estructura del directorio y efectúa el cambio indicado en forma recursiva.
Consideraciones:
 El directorio base debe estar asociado con el grupo del usuario.
 Un usuario puede pertenecer a varios grupos para lo cual debe estar listado como miembro en cada
grupo en el archivo ‘/etc/group’ sin embargo, la identificación de grupo asociado con los archivos
permanece como el grupo primario.
Ejemplo:
Verificamos la asociación del grupo:
# chgrp users /usr/acct/memo
08. Comando ‘newgrp’
Propósito:
Cambia la asociación de grupo a un usuario.
Sintaxis:
/usr/bin/newgrp [-] { grupos }
Opciones:
• - Se reinicia la secuencia de logeado permitiendo al usuario pertenecer al nuevo grupo.
Consideraciones:
 El usuario debe pertenecer al nuevo grupo. Los archivos y directorios creados luego que se
efectúan los cambios reflejan la nueva pertenencia.
 Sin argumentos, se regresa al grupo primario.
Ejemplo:
$ groups
other root bin sys adm mail tty lp daemon uucp
$ id
uid=0(root) gid=1(other)
$ pp
$ ls -l
-rw-r—r-- 1 root other 0 Dec 10 17:21 pp
$ newgrp bin
$ pp1
$ ls -l
-rw-r—r-- 1 root other 0 Dec 10 17:21 pp
-rw-r—r-- 1 root bin 0 Dec 10 17:21 pp1
09. MANEJO DE LOS PERMISOS DE ACCESO
 El Sistema Operativo UNIX controla el ingreso al sistema utilizando nombres de usuario (login) y
palabras clave (password) que guarda en archivos especiales.
JDCM UNIX SVR4 - NB 37
 Tales archivos, junto con los permisos para los directorios, son utilizados para controlar quién puede
utilizar un determinado archivo o directo-rio.
 Existen tres tipos de usuarios:
• propietario Aquel que creó el archivo o directorio.
• grupo El propietario pertenece a este grupo luego todo el grupo tiene acceso a este
archivo o directorio pero con restricciones (si las hubiera).
• otros Cualquier otro usuario.
 Existen tres tipos de acceso:
• lectura Controla quién puede mirar el contenido de un archivo.
• escritura Controla quién puede modificar el contenido de un archivo o directorio.
• ejecución Controla quién puede ejecutar un programa.
10. Comando ‘chmod’
Propósito:
Modificar los atributos de un archivo.
Sintaxis:
/usr/bin/chmod modo archivo(s)
Opciones:
• modo Representa un número octal que sirve para la modificación de los atributos del archivo.
Consideraciones:
 Se debe ser propietario del archivo o el administrador del sistema para ejecutar este comando.
 Notación: Octal
Permisos Usuario Grupo Otros
lectura 400 040 004
escritura 200 020 002
ejecución 100 010 001
2. Notación: Simbólica
Permisos Acción Tipo
u (usuario) + r
g (grupo) - w
o (otros) = x
a (todos)
Ejemplos:
$ chmod 755 archivo1 Brinda permiso de lectura, escritura y ejecución
para el propietario, permiso de lectura y ejecución
al grupo y otros.
$ chmod 700 archivo2 Brinda permiso de lectura, escritura y ejecución
para el propietario pero ningún permiso al grupo u
otros.
$ ls -ld budget
drwxr-xr-x 2 user1 grp100 512 Jun 4 15:04 budget
$ chmod go -x budget
$ ls -ld budget
drwxr—r-- 2 user1 grp100 512 Jun 4 15:04 budget
JDCM UNIX SVR4 - NB 38
COMUNICACIONES
A. COMUNICACIONES EN EL AMBIENTE UNIX
01. INTRODUCCION
 Las redes juegan un rol importante en la era informática actual. La necesidad de compartir información
y recursos hace de las redes una necesidad y puesto que el ambiente computacional está en constante
desarrollo, también ellas se desarrollan.
 Debido a su simplicidad y a su disponibilidad en la comunidad educativa e investigadora, el sistema
UNIX ha sido el favorito para el desarrollo de redes desde mediados de los ‘70.
 De aquí nace el UUCP.
 UUCP es un conjunto de programas que permiten transferencia de archivos, ejecución remota,
mantenimiento y administración en una red UNIX.
 UUCP ha sido siempre popular debido a que es de bajo costo.
 Es eficiente en términos de dispositivos periféricos, ciclos de procesamiento, experiencia administrativa.
 Es un sistema de redes genérico.
 La comunicación electrónica UNIX le permite:
 Enviar y recibir correo.
 Transmitir mensajes rápidos, y hasta mantener “conversaciones” entre dos usuarios.
 Mostrar el calendario de un año (o mes) específico.
 Mostrar un recordatorio diario.
02. ARCHIVOS PARA MENSAJES BASICOS
ARCHIVO /etc/issue
 Proporciona un mensaje de bienvenida.
 Es un mensaje que se muestra previo al login.
 Consta de cualquier texto que se requiera mostrar (incluyendo atributos de pantalla).
ARCHIVO /etc/motd
 Muestra un mensaje general a los usuarios.
 Se muestra cada vez que un usuario ingresa al sistema.
 Consta de cualquier textoque se desee mostrar (incluyendo atributos de pantalla).
03. Comando ‘tty’
Propósito:
Mostrar el nombre completo del terminal donde se ejecuta este comando.
Sintaxis:
/etc/tty [-l] [-s]
Opciones:
• l Imprime el número de la línea sincrónica a la cual está conectado el terminal (si se encuentra
en una línea sincrónica).
• s Inhibe la respuesta de este comando permitiendo chequear sólo el “código de salida”.
Consideraciones:
Los “códigos de salida” son:
• 0 Si la entrada estándard es un terminal.
• 1 Cualquier otra cosa.
JDCM UNIX SVR4 - NB 39
• 2 Si se especifican opciones inválidas.
 Originalmente su nombre era un acrónimo de “teletypewriter” (teleimpresora) pero ahora viene a
significar cualquier dispositivo terminal.
Ejemplo:
$ tty
/dev/tty100
04. Comando ‘stty’
Propósito:
Fija las opciones de entrada y/o salida del terminal.
Sintaxis:
/bin/stty [-a] opciones/argumentos
Opciones:
• a Muestra todas las opciones.
• parenb(-parenb)
Habilita (deshabilita) la generación y detección de paridad.
• cs8 Selecciona el tamaño del caracter.
• 1200 2400 4800 9600
Fija la velocidad en baudios del terminal al valor dado.
• caracteres_de_control valor
Fija el “caracter_de_control” al “valor”. Si “valor” está precedido por un ‘ ^ ‘ (previa
secuencia de ESCAPE), entonces su valor es el correspondiente caracter ‘CTRL’.
Consideraciones:
 Sin argumentos, reporta los valores de algunas opciones.
 Si un caracter está precedido por un ( ^ ), entonces el valor de esa opción es el caracter CTRL
correspondiente i.e.: ^h es CTRL h.
Ejemplo:
$ stty kill ^c
$ stty (APARECEN ALGUNOS VALORES DE ALGUNAS OPCIONES)
05. Comando ‘news’
Propósito:
Mostrar noticias del sistema.
Sintaxis:
/bin/news [-ans]
Opciones:
• a Muestra todas las noticias sin importar la actualidad de las mismas.
• n Muestra sólo los nombres de los archivos de noticias recientes.
• s Muestra el número actual de noticias.
Consideraciones:
 Las noticias se basan en la actualidad (fecha de modificación del archivo ‘.news_time’ en el
directorio base, y sólo se muestran los más recientes comparados con la fecha de este archivo).
 Sin argumentos se muestran las noticias contenidas en el directorio ‘/var/news’.
Ejemplo:
$ news -n *
item4 item3 item2 item1
$ news -s
JDCM UNIX SVR4 - NB 40
4 new items
$ news item3
---------------------- ------ ------ ----
----- ---- ------- -- --- ---- ------
-- -------- ---- ------- -------- ---- --.
06. Comando ‘mesg’
Propósito:
Permitir o negar el ingreso de mensajes.
Sintaxis:
/bin/mesg [-n] [-y]
Opciones:
• n Previene que los usuarios le envíen mensajes.
• y Permite que se le envíen mensajes.
Consideraciones:
 No bloquea los mensajes enviados por el super-usuario mediante el comando ‘wall’.
 Solamente bloquea los usuarios ordinarios (incluso utilizando ‘wall’).
 El comando sin opciones reporta el estado actual sin modificarlo.
Ejemplo:
$ mesg-n
07. Comando ‘who’
Propósito:
Determinar quién ha ingresado al sistema.
Sintaxis:
/usr/bin/who [-uqH]
/usr/bin/who am i
Opciones:
• u Información completa de usuarios activos en el sistema.
• q Número de usuarios activos (y sus nombres).
• H Precede la salida con una cabecera.
• s Muestra sólo el nombre, terminal/línea usado(a), tiempo. Es la salida por defecto.
Consideraciones:
 La información mostrada por este comando se obtiene del archivo ‘/etc/utmp’ en el momento de
accesar al sistema.
 Usualmente se obtiene la información requerida a partir del archivo ‘/etc/wtmp’ el cual contiene
una historia de todos los ingresos al sistema desde que este archivo fué creado.
 El formato general de salida es:
nombre línea tiempo libre PID coment
donde:
• nombre Es el nombre del login del usuario.
• línea Nombre de la línea conforme se encuentra en el directorio ‘/dev’.
• tiempo Hora en que el usuario ingresó al sistema.
• libre Horas y minutos desde la última actividad de esa línea en particular. Un punto ( . )
indica que ha habido actividad en el terminal en el último minuto. Una línea sin
actividad por más de 24 horas es marcada como ‘old’.
JDCM UNIX SVR4 - NB 41
• PID Identificación del proceso del shell del usuario.
• coment Comentario asociado con esta línea tal y como se encuentra en el archivo de
configuración ‘/etc/inittab’.
Ejemplo:
$ who -Hu
NAME LINE TIME IDLE PID COMMENT
user1 tty04 Jan 26 13:11 . 8875
usert8 tty101 Jan 26 10:48 . 123
08. Comando ‘finger’
Propósito:
Muestra información sobre usuarios logeados, remotos y locales.
Sintaxis:
/bin/finger [-fqlb]
Opciones:
• f Suprime la línea e cabecera.
• q Muestra sólo el nombre, terminal, y tiempo de ingreso al sistema.
• l Muestra la salida en forma detallada.
• b Suprime el directorio base y el shell de la presentación.
Consideraciones:
 Incluye información de usuario como el nombre de login, su descripción (tomada del archivo
‘/etc/passwd’), nombre de terminal, tiempo sin uso, hora en que ingresó al sistema, y ubicación (si
es conocida).
 Un ‘ * ‘ al inicio del nombre de terminal indica que no permite recibir mensajes.
Ejemplo:
$finger
Login Name TTY Idle When Where
wjnr Bill Radognmia *console 1.17 Thu 08:10
root 0000-Admin *term/15 1 Thu 08:11 italy
root 0000-Admin term/10 20 Fri 10:19
$ finger -f
wjnr Bill Radognmia *console 1.17 Thu 08:10
root 0000-Admin *term/15 1 Thu 08:11 italy
root 0000-Admin term/10 20 Fri 10:19
$ finger -q
Login TTY When
wjnr *console Thu 08:10
root *term/15 Thu 08:11
root term/10 Fri 10:19
$ finger -l
Login name: userb (messages off) In real life: bourne shell
Directory: /home/userb Shell: /sbin/sh
On since Oct 8 08:47:08 on term/18
09. Comando ‘write’
Propósito:
Escribir a otro usuario, enviar mensajes.
Sintaxis:
/bin/write usuario [línea]
JDCM UNIX SVR4 - NB 42
Opciones:
• usuario Usuario logeado en el sistema.
• línea Se utiliza para indicar a qué terminal se desea escribir (asumiendo que un usuario está
logeado más de una vez en el sistema i.e., está utilizando varios terminales).
Consideraciones:
 El comando ‘ write ‘ copia las líneas que digita en su terminal en el de otro usuario.
 Cuando se invoca por primera vez, envía el mensaje:
Message from usuario (tty?) [date] ..
a la persona con la que se desea comunicar.
 En este punto, se permite responder al que recibe el mensaje.
 La comunicación continúa hasta que se envíe una interrupción.
 Si se envía un mensaje a un usuario logeado más de una vez y sin la opción ‘ línea ‘, aparece el
siguiente mensaje:
User is logged on more than one place.
You are connected to “terminal”.
Other locations are:
terminal
 El primer “terminal” del mensaje anterior se refiere al terminal en que primero ingresó el usuario
con el que se desea contactar.
 Conversaciones bidireccionales: Se debe tener alguna forma de indicar al otro lado de la línea
cuándo es su turno de comunicarse y cuándo se acaba la conversación.
Ejemplo:
$ write leo
Oye Leopoldo, te invito una rubia.
CTRL d
$ write leo
Oye Leopoldo, ahora?.. o
Mensaje de `leo`
Acepto, pero la hora?... o
A las 3 pm, te parece? o
Bien, chau oo
EOF
CTRL d
Mensaje de `pedro`
Oye Leopoldo, ahora?.. o
$ write pedro
Acepto, pero la hora ?... o
A las 3 pm te parece? o
Bien, chau oo
CTRL d
$
10. Comando ‘wall’
Propósito:
Escribir a todos los usuarios a la vez.
Sintaxis:
/etc/wall
Opciones:
Ninguna
Consideraciones:
 Este comando lee la entrada estándard hasta que encuentre un fin de archivo y lo toma como el
mensaje a enviar.
 Envía este mensaje a todos los usuarios actualmente logeados y lo precede por:
Broadcast message from: ....
JDCM UNIX SVR4 - NB 43
Ejemplo:
$ wall
Atención.! Debido a fallas en la impresora principal, sírvanse enviar sus trabajos a la impresora secundaria.
CTRL d
11. Comando ‘mailx’
Propósito:
Herramienta interactiva para el envío o recepción de correo electrónico.
Sintaxis:
/usr/bin/mailx [-s cabecera] { usuarios } ENVIO
/usr/bin/mailx [-f archivo][-HN] RECEPCION
Opciones:
• s ‘cabecera’ Asigna una “cabecera” al correo.
• f ‘archivo’ Lee los mensajes desde un ‘archivo’ alterno.
• H Imprime sólo el resumen de cabecera.
• N No imprime la cabecera inicial.
Consideraciones:
 El correo que llega se almacena en un archivo estandard para cada usuario en el directorio
‘/var/mail’.
 Cada mensaje que se lee se marca y mueve a un archivo secundario denominado ‘mbox’ en el
directorio base.
 Al leerse el correo, “mailx” se encuentra en ‘modo comando’.
 La cabecera o asunto a tratar no debe sobrepasar los 1024 caracteres.
 A cada mensaje se le asigna un número secuencial, y siempre se sabe que existe un mensaje.
 Ingrese un mensaje y presione  CR  al término de cada línea.
 Envíe el mensaje presionando  CTRL-d  o  ~  al inicio de una línea y sólo esta secuencia o
caracter.
 Las letras ‘ N ‘ (nuevo) y ‘ U ‘ (no leído) designan el estado de cada mensaje, seguido de una
información descriptiva que muestra el nombre del que envía el mensaje así como la fecha y hora
en que se envió, su longitud en líneas y caracteres, y el asunto del mismo.
Comandos Internos:
• ? Muestra una lista de posibles comandos ‘ ~ ‘.
• ~!cmd Ejecuta el comando especificado por cmd.
• ~h Requiere: asunto, a, copias.
• ~q Termina salvando el mensaje en el archivo ‘dead.letter’ del directorio de trabajo. Es
una interrupción (exit).
• ~rfile Lee un archivo insertándolo en su mensaje.
• d Borra los mensajes del mailbox.
• ~x Sale del mailbox sin modificar el mismo i.e., el mensaje no se salva.
• ~. Salida estándar: envía el mensaje y termina el comando.
Curso: Unixware
JDCM UNIX SVR4 - NB a
APENDICES
ACCESO A MS-DOS
a) Conjunto de Comandos ‘DOS’:
• doscat Muestra uno o más archivos en formato DOS.
• doscp Copia archivos entre un disco DOS y un filesystem UNIX/XENIX.
• dosdir Lista el contenido de un directorio DOS en ese formato.
• dosls Lista el contenido de un directorio DOS en formato UNIX/XENIX.
• dosrm Remueve archivos de un directorio o disco DOS.
b) Consideraciones:
 Los argumentos archivo o directorio en formato DOS tienen la forma:
dispositivo:nombre
donde:
• dispositivo Es el nombre completo del dispositivo que posee formato DOS y,
• nombre Es el nombre completo de un archivo o directorio en el dispositivo DOS.
 Se usan slashes ( / ) y no backslashes (  ) para la separación de archivos y directorios.
 Cuando se copia un archivo a DOS, se trunca el nombre del primero a la longitud estandard del
DOS: 8 caracteres. Las extensiones siguen el mismo patrón: más de tres, se truncan. Los caracteres
extraños también se remueven. No se pueden utilizar metacaracteres para referenciar directorios
DOS.
 Por conveniencia, existe un archivo que puede ser configurado por el usuario: /usr/default/msdos
en el cual se definen los nombres de dispositivos DOS asociados con los nombres de dispositivos:
A=/dev/fd0
C=/dev/hd0d
de esta manera, en lugar de especificar el nombre de dispositivo /dev/fd0, utilizamos
simplemente la letra “A”.
Ejemplo:
$ doscat /dev/fd0:/docs/memo.txt
$ doscat /tmp/f1 /tmp/f2 /dev/fd0:/src/file.asm
$ dosdir /dev/fd0:/src
$ doscp /tmp/myfile.txt /dev/fd0:/docs/memo.txt
$ dosls /dev/fd0:/src
$ dosrm /dev/fd0:/docs/memo.txt
$ dosdir A:/src A:/dev
$ dosrm a:/docs/memo1.txt
BIBLIOGRAFIA
UNIX Networking
Stephen Kochan  Patrick Wood
Hayden Books UNIX System
Library
UNIX System Administration
David Fiedler  Bruce Hunter
Hayden Books UNIX System
Library
UNIX Shell Programming
Stephen Kochan  Patrick Wood
Hayden Books UNIX System
Library
Tricks of the UNIX Masters
Russell Sage
The Waite Group SAMS
System V Operating System
User’s Guide, ATT
JDCM UNIX SVR4 - NB b
Notas
i El primero de los shell escritos fué el 'Bourne-shell', debido a su creador Steve Bourne.
ii Hacia 1977, el número de instalaciones UNIX creció hasta alrededor de 500 de las cuales, 125 estaban en
universidades.
iii Aquí algunos estudiantes graduados (Bill Joy y Chuck Haley) hicieron buena parte de la versión de Berkeley,
diseñando un paquete que se llamó BSD (Berkeley Software Distribution).
iv 1977 también marcó el año en que el Sistema UNIX fue portado por primera vez a una máquina diferente a la
PDP (i.e., hecho para ejecutar en otra máquina con pocos o ningún cambio), la Interdata 8/32.
v Actualmente, la versión XENIX más difundida es la de SCO XENIX (Santa Cruz Operation), la cual tiene como
upgrade su versión SCO UNIX.
vi La versión UNIX System IV fué utilizada internamente en los Laboratorios Bell pero se consideró un producto
de transición que nunca fué soportado.
vii A principios de año habían alrededor de 100,000 instalaciones del Sistema UNIX en el mundo, corriendo en
máquinas con amplio poder de procesamiento, desde microcomputadoras a mainframes y supercomputadores, y en
máquinas de diferentes líneas de productos y de diferentes proveedores.
viii El primer esfuerzo organizado para definir un estándard para interface de sistema empezó a principios de los
'80 con la formación del '/usr/group Standards Commitee' (como se conocía en ese entonces a UNIFORUM). La
finalidad del grupo era la de proponer una especificación para una interface de sistema operativo que pudiera proveer
una base con la cual pudieran ser fácilmente portadas un gran número de aplicaciones. Las metas específicas del
comité fueron las de remover información específica a máquina e implementación, y utilizar valores simbólicos en lugar
de numéricos. Los esfuerzos de este comité produjeron finalmente el '/usr/group Standard', adoptado por los miembros
del '/usr/group' en 1984.
ix Formada a fines de 1984, X/OPEN consistió originalmente de cinco productores de computadores de Europa
que construían sistemas basados en el sistema operativo UNIX. El trabajo de estándares del grupo estaba fuertemente
influenciado tanto por el '/usr/group Standard' como por el SVID. La finalidad del grupo es la de invertir negocios,
recursos técnicos y de mercadeo en el desarrollo de un ambiente común de aplicación multivendedor basado en
estándares internacionales ('de jure') o 'de facto'. La Guía para la Portabilidad incluye algunas áreas que no han sido
tocadas por el SVID: comandos y utilitarios para el manejo de información, interfaces con ventanas, bases de datos
relacionales, PASCAL y COBOL.
x A fines de 1984, los miembros del '/usr/group' adoptaron el '/usr/group Standard', un documento que más
tarde se convertiría en la base del Estándar 1003.1 del IEEE -POSIX.1-, el primero de una emergente familia de
estándares para sistemas abiertos conocidos como POSIX. Este estándar define la interface entre programas de
aplicación portables y el sistema operativo, basado en modelos históricos de sistemas UNIX, y consta de funciones que
son frecuentemente implementadas como llamadas al sistema directamente dentro del kernel y funciones de librería. Lo
siguiente es un resumen de la familia de estándares POSIX:
### IEEE 1003.1: POSIX.1: System Interface
### IEEE 1003.2: POSIX.2: Shell  Tools
### IEEE 1003.3: POSIX.3: Testing  Verification
### IEEE 1003.4: POSIX.4: Real Time
### IEEE 1003.5: POSIX.5: ADA Language Bindings
### IEEE 1003.6: POSIX.6: Security Extensions
### IEEE 1003.7: POSIX.7: System Administration
### IEEE 1003.8: POSIX.8: Networking
### IEEE 1003.9: POSIX.9: FORTRAN Language Bindings
### IEEE 1003.10: POSIX.10: Supercomputing
### IEEE 1003.11: POSIX.11: Transaction Processing
xi Esta fundación desarrolla especificaciones y productos portables de software que están basados en estándares
de la industria y que son seleccionados utilizando un proceso abierto: Request for Technology. La tecnología puede
ser recibida de cualquier organización, incluyendo aquellas que no son miembros, y se selecciona basada en el criterio
de portabilidad, interoperabilidad y escalabilidad. El sistema operativo de la OSF es el OSF/1 y está basado en el
producto AIX Release 3 de IBM el cual, está basado a su vez en el System V Release 2 de ATT. Ha sido actualizado
desde ese punto e incluye ahora el soporte al POSIX.1 y el X/OPEN PG3.
xii Esta organización advierte a la recientemente creada UNIX Software Organization, separada de ATT, sobre la
licencia y requerimientos de desarrollo para sus productos de software. Además, UNIX International ha sido creada para
ser una voz clara de los usuarios finales, desarrolladores de aplicaciones y suministradores de sistemas, sobre
continuidad de los productos existentes y la importancia del proceso de desarrollo abierto.
xiii Caracteres precedidos por ( ^ ) se denominan caracteres de control y se obtienen presionando a la vez las
teclas de control CTRL y la tecla deseada.
xiv El texto puede consistir de una sola palabra o un conjunto de caracteres.
xv Cuando se encuentra una ocurrencia, se muestra el número de la línea que contiene ésta.
xvi Se muestra sólo la última línea en la que ocurrió una sustitución.
xvii Los campos y caracteres comienzan desde 0.
xviii 'n' es un entero decimal que puede expresarse como '+n' (mayor que), '-n' (menor que), o 'n' (exacto).
UNIXWARE BÁSICO
JDCM NB 1
EJERCICIOS
Ejercicios varios
1. Ingrese 'datte' y presione RETURN. Aprecie la salida.
2. Ingrese 'datte' pero no presione RETURN. Corriga el error y presione RETURN. El comando debe
ejecutarse satisfactoriamente de lo contrario, repita el proceso.
3. Ingrese 'datte' pero no presione RETURN. Cancele esta línea de comando, ingrésela correctamente y
ejecútela nuevamente.
4. Utilize el comando 'date' para mostrar la fecha y hora del sitema en los siguientes formatos:
### mm/dd/yy
### hh:mm:ss
### día del año
5. Utilize el comando 'stty' para mostrar las teclas que borran caracteres.
6. Utize el comando 'cal' para determinar el día de la semana de un nacimiento en este año.
7. ¿Quécomandos se utilizan para terminar una sesión?.
8. Interprete las siguientes designaciones de archivos utilizando los metacaracteres para nombres de archivos:
### *.?
### [Ff]*.rpt
### *ltr[5-9]
### memo?
9. Dada la siguiente relación de nombres de archivos:
feb86
feb88
ene12.91
ene19.91
ene26.91
ene5.90
ene89
ene90
ene88
mar88
mar89
memo1
memo10
memo2
memo2.sv
Cuál es la salida estándard de aplicar los siguientes rangos de búsqueda?:
a) ls *
b) ls m[a-df-z]*
c) ls ene*
d) ls ?????
e) ls ene?? feb8? mar?8
f) echo *
g) echo *[!0-9]
h) echo *.*
i) echo *90
j) echo [efm][ae]bmr]*
10. Qué efecto tienen las siguientes secuenias de comandos?:
a) rm ???
b) mv progs/* /usr/user01/backup
c) rm *.o
d) cd;pwd
e) cp memo1 ..
f) who -Ha | lp
g) ls -h 2/tmp/errors | lp
h) cat file1 file2
i) ls *[!0]
j) cat t* | pg
k) rm dir1/dir2
l) rm -r ./dir3
m) echo ??*
n) echo ?? *
Los siguientes ejercicios debe realizarlos con el editor 'ed'.
11. Muestre el contenido de un archivo de dos maneras:
### Utilizando una dirección completa.
### Método corto.
12. Muestre la línea actual.
13. Muestre la última línea con su número de línea.
14. Muestre un rango de líneas con todos los caracteres no imprimibles.
15. Borre la última línea.
16. Mueva las líneas 3 a 5 de un archivo que Ud. escoga hacia el inicio del mismo.
17. Sustituya una palabra que se repita entre un conjunto de líneas.
18. Muestre la fecha y hora del sistema sin salir del editor.
UNIXWARE BÁSICO
JDCM NB 2
Los siguientes ejercicios debe realizarlos con el editor 'vi'.
19. Sustituya una palabra que Ud. escoga por otra, en una sola línea . Emplee todas las formas posibles.
20. Configure el editor para que muestre los números de línea.
21. Verifique los usuarios que están trabajando en ese momento, sin salir del editor.
22. Desde una ubicación que Ud. escoga dentro de un archivo que esté editando, inserte otro archivo debajo de la
línea 12 de su archivo inicial.
23. Ingrese en su archivo la fecha y hora actuales. Escoga un formato determinado.
24. Marque un texto y mueva 4 líneas a la posición marcada.
25. Marque un texto y mueva 4 palabras antes del cursor tras el último caracter de la vigésima segunda palabra del
texto marcado.
Ejercicios varios
26. Cree un directorio de nombre 'clase' en su directorio base.
27. Debajo de este directorio cree otros dos.
28. Muestre recursivamente el contenido del directorio 'clase'.
29. Copie un archivo a este directorio, con otro nombre (renombrándolo).
30. Muestre el número de inodos del archivo original y de la copia.
31. Enlace este nuevo archivo con otro nombre en uno de los subdirectorios creados y repita el paso anterior. Note el
resultado.
32. Renombre este archivo recientemente creado en el otro directorio y verifique los inodos correspondientes.
33. Muestre por pantalla un archivo.
34. Imprima este archivo.
35. Formatee este archivo para doble espacio e imprímalo.
36. Muestre los permisos para este archivo.
37. Qué comandos son válidos?:
rm a!*
rm a*
cd /etc/bin
cp /etc /tmp
cp /etc/dir1/file34 /usr/dir1
vi ./*.c
cat -x file?.c
cat file[0-9][0-9].+ | lp
cp abc acb ../tmp
cp abc*abc /usr/tmp
echo bcdnbcd
38. Cambie los permisos de acceso utilizando la notación octal de modo que el propietario pueda accesar y modificar
los archivos, los miembros de grupo sólo puedan ver el archivo, y todos los demás usuarios estén restringidos
completamente de accesar estos archivos.
39. Cambie los permisos de acceso utilizando la notación simbólica para remover todos los accesos a los miembros
de grupo y todos los demás usuarios (excepto del propietario).
40. Modifique el permiso por defecto para restringir todo acceso a los miembros de grupo y otros usuarios a nuevos
archivos y directorios. Pruebe que funcionen.
41. Verifique su nombre de grupo y usuario.¿Cuáles son los miembros de su grupo?.
42. Interprete los siguientes permisos:
### 755
### a+x
### o=
### u-wx,go-x
### a=r
### 700
### =r
43. Escriba un comando que muestre los nombres de todos los archivos de directorio /etc y que terminen en mount.
44. Cree un script (archivo de comando) que muestre la fecha, hora y su directorio de trabajo. Hágalo ejecutable.
45. Cree un script que muestre el número de usuarios en su sistema en el formato: El número de usuarios es n.
46. Escriba un comando grep que busque en el archivo /etc/passwd los usuarios que pertenezcan al grupo 101.
47. Sortee el archivo /etc/passwd por el group-id.
UNIXWARE BÁSICO
JDCM NB 1
PREGUNTAS DE EXAMEN
Para todos los problemas/ejercicios siguientes, donde convenga o exista más de una
alternativa de solución, asuma lo que crea conveniente y detalle en base a qué toma su
decisión.
1.- Seleccionar todos los archivos cuyos nombres contengan por lo menos tres letras mayúsculas en posiciones
consecutivas y por lo menos un caracter antes de dos números en posiciones consecutivas.
2.- Dentro del editor ‘ vi ‘, deseamos cambiar el directorio de trabajo y queremos verificar que lo haya hecho.
3.- Periódicamente deseamos obtener el listado completo de ciertos archivos. Indicar dos formas de obtener esto y
seleccionar la más eficiente.
4.- Se requiere un listado alfabético columnado de ciertos archivos que se encuentren en directorios diferentes y de
los cuales se requiere información de su tipo de archivo.
5.- La información del problema anterior debe ser enviada a otro usuario del sistema. Se requiere emplear el
comando ‘ mailx ‘.
6.- Ningún usuario puede ingresar al sistema sin tener un user_id. Se requiere conocer quién está trabajando en la
línea de comunicación ‘tty108’.
7.- Dentro del editor ‘ed’ necesitamos reemplazar todos los caracteres “ A “ por “ Z “, de las líneas 25 a la 36 de un
texto que contiene 40 líneas.
8.- Dentro del editor ‘vi’ necesitamos marcar un texto (párrafo).
9.- Dentro del editor ‘vi’ necesitamos marcar parte del texto total y luego guardarlo temporalmente.
10.- Deseamos identificar el terminal que actualmente utilizamos. Emplear 2 maneras.
11.- Debemos recuperar el texto que acabamos de borrar y moverlo hacia la posición inicial (de línea, de texto).
Asuma que el texto termina en CR.
12.- Seleccione parte de un texto y haga lo mismo que en el problema anterior.
13.- Ingrese los caracteres del teclado en un archivo, utilizando los comandos:
a) cat b) ed c) vi
14.- Copie los archivos de un directorio /abc (conteniendo a su vez 2 sub-directorios ./bcd y ./cde al directorio /tmp.
15.- Cómo encontraría todos los archivos texto del directorio /etc?.
16.- Cómo imprimiría en la impresora printer las 5 primeras líneas de los archivos encontrados en el problema
anterior?.
17.- Cómo imprimiría en la impresora anterior la 2 últimas líneas del archivo /etc/profile?.
UNIXWARE INTERMEDIO
JDCM UNIX SVR4 - NI i
TABLA DE CONTENIDO
ILUSTRACIONES: Pág
Figura No. 1: Integración del Sistema Operativo UNIX 1
Figura No. 2: Resumen Arquitectónico del Sistema Operativo UNIX 1
Figura No. 3: Jerarquía del Sistema Operativo UNIX 2
FIgura No. 4: Funcionamiento del shell 3
PARTES CONSTITUTIVAS: Pág
MAS BASES DEL SISTEMA OPERATIVO UNIX 1
COMUNICACIONES 6
BASES DE LA ADMINISTRACION UNIX 11
EL SHELL 22
APENDICES a
CONTENIDO: Pág
TABLA DE CONTENIDO ______________________________________________________________________ i
Comandos de Referencia en Línea...............................................................................................................................ii
MAS BASES DEL SISTEMA OPERATIVO UNIX 1
A. ESTRUCTURA DEL SISTEMA UNIX - REPASO_________________________________________________1
01. CARACTERISTICAS UNIX ................................................................................................................................ 1
02. COMPOSICION DEL SISTEMA OPERATIVO UNIX...................................................................................... 1
03. DESCRIPCION DE DIRECTORIOS IMPORTANTES...................................................................................... 2
B. ACCESO AL SISTEMA UNIX - REPASO _______________________________________________________2
01. QUE ES NECESARIO?......................................................................................................................................... 2
02. CONVENCIONES GENERALES ........................................................................................................................ 3
C. LINEAS DE COMANDO - REPASO ___________________________________________________________3
01. COMO EJECUTA EL SISTEMA UNIX UN COMANDO ................................................................................. 3
D. EDITORES DE TEXTOS_____________________________________________________________________3
01. EDITOR 'vi' - Parte II............................................................................................................................................. 3
COMUNICACIONES 6
A. COMUNICACION CON OTROS SISTEMAS UNIX _______________________________________________6
01. INTRODUCCION.................................................................................................................................................. 6
02. CARACTERISTICAS............................................................................................................................................ 6
03. DESCRIPCION GENERAL.................................................................................................................................. 6
04. Comando 'uname'.................................................................................................................................................... 7
05. Comando 'uuname'.................................................................................................................................................. 7
06. Comando 'uucp'....................................................................................................................................................... 8
07. Comando 'uuto' ....................................................................................................................................................... 8
08. Comando 'uupick' ................................................................................................................................................... 8
09. Comando 'uustat'..................................................................................................................................................... 9
10. Comando 'cu'........................................................................................................................................................... 9
11. Comando 'uux' ...................................................................................................................................................... 10
BASES DE LA ADMINISTRACION UNIX 11
A. COMANDOS PARA OPERACIONES DE RESPALDO____________________________________________11
01. DEFINICIONES DE ARCHIVAMIENTO Y BACKUP ................................................................................... 11
02. Comando 'tar' ........................................................................................................................................................ 11
JDCM UNIX SVR4 - NI ii
03. Comand 'cpio'........................................................................................................................................................ 12
04. Comando 'dd' ........................................................................................................................................................ 12
B. IMPRESION DE ARCHIVOS - PARTE II ______________________________________________________13
01. Comando 'disable'................................................................................................................................................. 13
02. Comando 'enable'.................................................................................................................................................. 13
03. Comando 'accept'.................................................................................................................................................. 13
04. Comando 'reject' ................................................................................................................................................... 14
05. Comando 'lpmove' ................................................................................................................................................ 14
06. Comando 'lpsched' ................................................................................................................................................ 14
07. Comando 'lpshut'................................................................................................................................................... 14
C. FACILIDADES ADMINISTRATIVAS _________________________________________________________15
01. Comando 'ln' ......................................................................................................................................................... 15
02. Comando 'od' ........................................................................................................................................................ 15
03. Comando 'umask'.................................................................................................................................................. 16
04. Comando 'ps'......................................................................................................................................................... 16
05. Comando 'kill' ....................................................................................................................................................... 17
06. Comando 'nice'...................................................................................................................................................... 17
07. Comando 'nohup' .................................................................................................................................................. 17
08. Comando 'cron' ..................................................................................................................................................... 18
09. Comando 'crontab' ................................................................................................................................................ 18
10. Comando 'at'.......................................................................................................................................................... 19
11. Comando 'atq'........................................................................................................................................................ 20
12. Comando 'atrm' ..................................................................................................................................................... 20
13. Comando 'batch'.................................................................................................................................................... 21
EL SHELL 22
A. EL SHELL INTERACTIVO__________________________________________________________________22
B. EL AMBIENTE SHELL_____________________________________________________________________22
01. QUE SUCEDE CUANDO SE HACE LOGIN?.................................................................................................. 22
02. QUE HACE EL '/etc/profile'? .............................................................................................................................. 22
03. QUE HACE EL './profile'?................................................................................................................................... 23
04. PROCEDIMIENTOS SHELL.............................................................................................................................. 23
05. REDIRECCION DE ENTRADA/SALIDA ........................................................................................................ 25
06. COMANDOS EN SECUENCIA ......................................................................................................................... 25
07. VARIABLES PROPIAS DEL SHELL ............................................................................................................... 26
08. CONSTRUCCIONES ADICIONALES.............................................................................................................. 26
09. SINTAXIS ............................................................................................................................................................ 26
APENDICES a
BIBLIOGRAFIA______________________________________________________________________________a
Notas _______________________________________________________________________________________a
Comandos de Referencia en Línea
 Los siguientes comandos UNIX le brindan acceso en línea a la información del manual de referencia:
### MAN Accesa a las entradas del manual de referencia en el sistema.
### MANDEX Accesa a un sistema indexado manejado por menú con el
fin de buscar los manuales en línea seleccionados para un determinado
asunto o comando.
 Utilícelos siempre!
UNIXWARE INTERMEDIO
JDCM UNIX SVR4 - NI 1
MAS BASES DEL SISTEMA OPERATIVO UNIX
A. ESTRUCTURA DEL SISTEMA UNIX - REPASO
01. CARACTERISTICAS UNIX
 Provee un medio computacional simple, eficiente, flexible el cual ofrece las siguientes ventajas:
 Sistema de propósito general.
 Provee un ambiente interactivo.
 Es un ambiente multi-usuario.
 Es un ambiente multi-tarea.
 Es portable.
 Posee herramientas poderosas para desarrollo.
 El UNIX SVR4 unifica las versiones importantes de UNIX (BSD, SunOS, XENIX, ATT) en un
producto robusto que sigue los estándares de la industria.
XENIX
UNIXSVR4
SunOS
4.3BSD
UNIX
SVR3
Figura No. 2: Integración del Sistema Operativo UNIX
02. COMPOSICION DEL SISTEMA OPERATIVO UNIX
Manipulación
de
archivos
Utilidades
Matemáticas
Utilidades
para
manejar
impresoras
Redes y
Comunicaciones
Herramientas
para
Desarrollo de
Software
Procesamiento
de Textos (vi)
Compilador 'C'
Utilidades
para
manejar
terminales
kernel
shell
Figura No. 3: Resumen Arquitectónico del Sistema Operativo UNIX
JDCM UNIX SVR4 - NI 2
03. DESCRIPCION DE DIRECTORIOS IMPORTANTES
/bin Contiene programas ejecutables y utilitarios propios del sistema.
/dev Contiene archivos especiales que representan dispositivos.
/etc Contiene programas y archivos que UNIX utiliza para su administración.
/lib Contiene librerías para programas y lenguajes (compiladores).
/tmp Contiene archivos temporales que pueden ser creados por cualquier usuario o el mismo sistema
operativo.
/usr Contiene archivos, programas, o utilitarios que son adicionales a los del sistema operativo.
/hinv Contiene archivos de configuración de hardware. Sistema de archivos propio de UNISYS.
/home Directorio por defecto para los directorios de los usuarios.
/proc Punto de montaje para otro tipo de sistema de archivos.
/sbin Contienen los programas requeridos por el comando ' init ' para el proceso de carga o para
recuperación a partir de una falla del sistema. También contiene los comandos administrativos para
el modo mono_usuario.
/stand Punto de montaje para el sistema de archivos de carga (bfs).
/
(root)
stand
sbin
dev etcunix
term
console
home
jose maria
tmp
var
usr
bin
lib
sbin
ls cat
= Directorios
= Archivos Ordinarios
= Archivos Especiales
= Enlaces
Figura No. 4: Jerarquía del Sistema Operativo UNIX
B. ACCESO AL SISTEMA UNIX - REPASO
01. QUE ES NECESARIO?
 Un terminal con las siguientes características:
 Debe estar en línea.y configurado a FULL DUPLEX., NO PARITY, BAUD RATE (acorde con el
computador), generar letras minúsculas siempre.
 Definido con la variable TERM:
 Un nombre para acceso (login) mediante el cual el sistema UNIX lo identifique como usuario
autorizado.
 Una palabra clave (password) que verifique su identidad.
JDCM UNIX SVR4 - NI 3
02. CONVENCIONES GENERALES
 Los comandos deben ser ingresados en minúsculas (a menos que se especifique lo contrario)
 Existen caracteres especiales simples:
 # para borrar un caracter
 @ para borrar una línea entera
 o compuestos: i
 ^d CTRL d, salir del sistema
 ^s / ^q CTRL s / CTRL q, XON/XOFF
 ^h CTRL h, borrar caracter
 ^u CTRL u, borrar línea
 ^c CTRL c, interrumpir la ejecución del comando
 o teclas especialmente etiquetadas:
 CR Termina una línea y posiciona el cursor en una nueva línea.
 ESC Realiza una función específica al usarse con otra tecla.
 DEL Anula la línea de comando actual.
 BREAK Detiene la ejecución de un comando o programa.
C. LINEAS DE COMANDO - REPASO
01. COMO EJECUTA EL SISTEMA UNIX UN COMANDO
USUARIO SHELL KERNEL PROGRAMAS
COMANDOS
UTILITARIOS
ETC.
FIgura No. 5: Funcionamiento del shell
 Luego de presionar la tecla CR para ejecutar un comando, el shell:
 Chequea que exista el comando.
 Chequea los permisos.
 Analiza los argumentos y opciones de la línea de comando.
 Inicia el proceso.
 Al terminar vuelve al prompt.
01. EDITOR 'vi' - Parte II
(1) MOVIMIENTO DENTRO DE UNA PANTALLA
 zCR Redibuja la pantalla con la línea actual al tope de la ventana.
 z- Redibuja la pantalla con la línea actual al final de la ventana.
 z. Redibuja la pantalla con la línea actual al centro de la ventana.
D. EDITORES DE TEXTOS
JDCM UNIX SVR4 - NI 4
(2) MOVIMIENTO POR BLOQUE DE TEXTO
 ( Inicio de la oración previa.
 ) Inicio de la oración siguiente.ii
 { Inicio del párrafo previo.
 } Inicio del párrafo siguiente.iii
(3) MODIFICAR TEXTO
 n(CR) O '  ', corre los caracteres a la derecha ' n ' líneas.
 n(CR) O '  ', corre los caracteres a la izquierda ' n ' líneas.
 ^V Inserta caracteres especiales.
 ~ Cambia de mayúsculas a minúsculas, o viceversa.
 ` Acento grave: retorna el cursor a la posición antes de ejecutar el comando  `x .
 '' Dos apóstrofes solos: lo retornan al inicio de la línea donde estuvo
originalmente.
 `` Dos acentos graves: lo retornan exactamente a donde estuvo.
 . Repite el último comando.
(4) BUSQUEDAS DENTRO DE LAS LINEAS
 nfx Mueve el cursor a la ocurrencia ' n ' del caracter ' x ', hacia adelante.
 nFx Mueve el cursor a la ocurrencia ' n ' del caracter ' x ', hacia atrás.
 ntx Posiciona el cursor antes de la ocurrencia ' n ' del caracter ' x ', hacia adelante.
 nTx Posiciona el cursor después de la ocurrencia ' n ' del caracter ' x ', hacia atrás.
 ; Repite el último comando f, F, t, T.
 , Repite el último comando f, F, t, T, pero al revés.
(5) OPCIONES DE LA LINEA DE COMANDOS
 vi +n file Abre el archivo 'file' en la línea ' n '.
 vi + file Abre el archivo 'file' en la línea ' n '.
 vi +/patrón file
Abre el archivo 'file' en la primera ocurrencia de 'patrón'.
 vi -R file Abre el archivo 'file' en modo de sólo lectura.
 vi -r file Recupera el buffer editado de 'file' luego de un crash del sistema.iv
a) OTRAS FUNCIONES
(1) BUFFERS ESPECIALES
 Son de propósito general, numerados del 1 al 9 y representan una historia de los últimos 9
buffers modificados. Siguen una estructura LIFO.
 Se nombran desde la ' a ' hasta la ' z ' (26 en total). Se les puede adicionar texto utilizando su
correspondiente mayúscula. Se mantienen mientras permanezca en el editor.
 Nomenclatura:
 nc
 Donde:
 Indica el uso de un buffer.
n Nombre del buffer.
c Comando y su rango asociado.
Ejemplo:
myw Copia una palabra en el buffer  m .
mp Obtiene el contenido del buffer  m 
y lo ubica después del cursor.
JDCM UNIX SVR4 - NI 5
(2) COMANDOS ':'
 :f Muestra el archivo actual, la línea donde se encuentra el cursor y el % del archivo
hasta ese punto.
 :f [file] Renombra el archivo en el buffer.
 :e# Retorna al archivo anteriormente editado (funciona entre 2 archivos).
 :e 'file4' Se edita un archivo dentro de una lista que está fuera de orden.
 :args Asumiendo una lista de archivos: file1, file2, file3, file4, file5, y si se olvida los
archivos que se están editando, el archivo actual aparece entre corchetes.
 :n Cuando se termina de editar el archivo fuera de orden, se regresa al anterior.
 :rew Se reinicia la edición desde el inicio de la lista.
 :rew! Se descartan los cambios y se inicia nuevamente.
 :vi Se reingresa al modo normal de edición por pantalla completa, en caso haya salido
de la misma y pasado al modo comando de 'ex'.
(3) FIJAMOS EL MEDIO AMBIENTE DEL EDITOR
 Se pueden cambiar las opciones de 'vi' utilizando el comando 'set', una vez cargado el
comando 'vi'.
 También lee un archivo de inicialización en el directorio de trabajo denominado ' .exrc ', donde
se incluyen comandos 'set'.
set showmode number
 Se puede construir una variable ' EXINIT ' y exportarla. Si está presente se usa en lugar de
' .exrc '.
EXINIT='set showmode number'
export EXINIT
Sintaxis:
:set Mostramos el valor de las opciones que ha modificado durante su sesión de edición.
:set all Mostramos todas las opciones del comando  set  y sus valores normales.
:set opt=val Fijamos una opción a un valor determinado.
:set noopt Regresamos una opción a su valor original.
:set opt? Mostramos el valor actual de una opción.
Algunas opciones:
showmode Muestra un mensaje de estado en el lado inferior derecho.
ai Indenta las líneas automáticamente, según la anterior. Se regresa presionando
CTRL d.
nu Muestra las líneas con numeración.
wrapmargin=x Especifica el tamaño del margen derecho que se utiliza para quebrar (wrap) el texto
conforme se tipea, ahorrando el tener que ingresar manualmente CR.
ignorecase Diferencia las letras mayúsculas de las minúsculas en las búsquedas.
list Muestra los caracteres escondidos.
wrapscan Permite encontrar todas las ocurrencias de una búsqueda sin importar la posición de
inicio (hace wrap al inicio del archivo).
JDCM UNIX SVR4 - NI 6
COMUNICACIONES
A. COMUNICACION CON OTROS SISTEMAS UNIX
01. INTRODUCCION
 Sus programas constitutivos han evolucionado y se le ha agregado nuevos componentes pero
manteniendo la misma estrategia básica.
 El enviar correo y software a usuarios de otros sistemas fué un evento significativo para la comunidad
UNIX a tal punto que tal vez UUCP sea responsable por el desarrollo de UNIX.
 UUCP fue tan vital para tanta gente que el mismo usuario tuvo que manejarlo ya que incluso los
proyectos de envergadura dependían del correo electrónico. De cualquier forma, los usuarios y no los
proveedores (como a menudo ha sido el caso con UNIX) ingresaron al negocio de desarrollarlo y
brindarle soporte.
 Hubo muchas versiones pero a partir de 1983 se ha estandarizado, ha sido adoptada por ATT
(denominada Basic Networking Utility) y ha sido aceptada conociéndose también como HoneyDanBer
por Honeyman (honey), Nowitz (dan) y Redman (ber), como se le conoce debido a que esas personas lo
integraron.
02. CARACTERISTICAS
 Requerimientos mínimos de harware para una ins-talación UUCP.
 Requiere un puerto tty y tal vez un modem.
 Un sistema pasivo únicamente recibe contacto de otros sistemas.
 Un sistema activo es el que puede iniciar estos contactos.
 La comunicación más simple es conectando dos equipos puerto a puerto.
 UUCP puede utilizar casi cualquier hardware que soporte una comunicación FULL-DUPLEX (pares
trenzados, modems, Ethernet, PBX).
03. DESCRIPCION GENERAL
 Si pensamos que una red es un conjunto de máquinas entre las que se puede transferir archivos y en las
que se puede ejecutar comandos de forma remota entonces, se puede usar UUCP para implementar una
red.
 Una red sugiere cierta clase de cooperación entre todas las máquinas que la componen sin embargo, ya
que UUCP no impone ningún control administrativo en éstas, una red UUCP tiende a ser anárquica esto
es, aunque todas las máquinas empleen UUCP, no hay seguridad en que dos máquinas se comuniquen
entre sí.
 El ser miembro de una red UUCP no significa necesariamente que se pueda comunicar con todos los
miembros de la red y esto porque no es realmente una red. El mecanismo de comunicación (dispositivo,
login, etc.) para cada máquina que puede ser accesada debe residir en un archivo local de forma que
éstas tengan la habilidad de comunicarse, enviar información y ejecutar comandos, o enviar información
solamente, aceptar a todos o sólo algunos usuarios, por ejemplo.
 En la conección UUCP se involucran dos capas de protocolos de comunicación siendo la de más alto
nivel el protocolo UUCP mismo que se encarga de intercambiar la identificación del sistema, enviar un
número de secuencia, negociar el protocolo de bajo nivel (X.25, TCP/IP, etc.), iniciar las transferencias
de archivos, ejecutar la secuencia de desconexión. Como cada mensaje se inicia con un caracter de
sincronismo ( ^P ) y se termina con un caracter nulo ( ^@ ) o nueva línea ( ^J ), la detección de errores
simplemente significa reconocer la ausencia del caracter de sincronismo. Pero esto es antes y después de
utilizar el protocolo de bajo nivel ya que durante la comunicación en sí, UUCP utiliza el protocolo de
bajo nivel para detección y corrección de errores.
JDCM UNIX SVR4 - NI 7
04. Comando 'uname'
Propósito:
Muestra el nombre del sistema local.
Sintaxis:
/usr/bin/uname [-amnrsv]
Opciones:
###a Toda la información.
###m Nombre de la máquina (hardware).
###n Nombre del nodo.
###r Revisión (release) del sistema operativo.
###s Nombre del sistema operativo.
###v Versión del sistema operativo.
Consideraciones:
 Sin opciones, muestra el nombre del nodo con que se identifica en una red de comunicaciones.
Ejemplo:
$ uname -a
unix usa 4.0 2 i486 386/AT
Nombre de máquina
Versión del sistema operativo
Release del sistema operativo
Nombre del nodo
Nombre del sistema
05. Comando 'uuname'
Propósito:
Lista los nombres de los sistemas en la red.
Sintaxis:
/bin/uuname[-l]
Opciones:
###l Muestra sólo el nombre del sistema local.
Consideraciones:
 Los nombres de los sistemas conocidos para 'uucp' se encuentran en el archivo 'Systems' y a menos que el
'cu' utilize otro diferente, deben ser los mismos sistemas.
 Sus directorios de trabajo son los siguientes:
/usr/spool/uucp
/usr/spool/uucppublic/*
/usr/lib/uucp/*
Ejemplo:
$ uuname -l
Unisys
$ uuname
0SUNISYS
1SUNISYS
Unisys
UNIXWARE INTERMEDIO
JDCM UNIX SVR4 - NI 8
06. Comando 'uucp'
Propósito:
Copia archivos a otros sistemas UNIX.
Sintaxis
/usr/bin/uucp [-Cjmr] [-n log] {archivo_fuente} {archivo_destino}
Opciones:
###C Copia el archivo local al directorio spool para transferencia.
###j Muestra el número de trabajo uucp para efectuar el seguimiento del estado del trabajo o para terminarlo.
###m Notifica por correo (al que lo requiere) el término del trabajo.
###r Encola el trabajo para transferencia, no lo envía.
###n 'log' Notifica al que recibe que el archivo ha sido enviado.
Consideraciones:
 El nombre completo de un archivo localizado en un sistema remoto debe contener todas los nombres de
sistemas que intervienen, separados por signos de exclamación ( ! ) como en:
nombre_del_sistema!/trayectoria
sistem_1!sistem_2!sistem_3!/trayectoria
 El nombre completo precedido por '~logname' refiere al directorio base del logname remoto.
 El destino se agrega al directorio '/var/spool/uucppublic'.
 Agrege un ' / ' al destino para asegurarse que el destino es un directorio. Si no existe se crea.
Ejemplo:
$ uucp -m mi_archivo sys1!sys2!/var/spool/uucppublic/user2
$ uucp -n rem_usuario locfile sys1!~/dir/
$ uucp -jr sys1!sys2!~/FILE2 sys1!~/user1/
07. Comando 'uuto'
Propósito:
Copia los archivos fuente a un directorio público.
Sintaxis:
/bin/uuto [-m] { fuente } { destino }
Opciones:
m Notifica al que envía que la transferencia está completa.
Consideraciones:
 Envía una copia del archivo fuente al directorio '/var/spool/uucppublic/PUBDIR' (receive/logname) en el
otro sistema y notifica al usuario designado por correo.
Ejemplo:
$ uuto -m empleados sys4!userx
08. Comando 'uupick'
Propósito:
Acepta o rechaza los archivos transferidos.
Sintaxis:
/bin/uupick [-s sistema] { usuario }
JDCM UNIX SVR4 - NI 9
Opciones:
###s 'sistema' Busca sólo los archivos enviados por el 'sistema' nombrado.
Consideraciones:
 Se usa en combinación con el comando anterior.
 Cuando el usuaio es notificado, se usa este comando para buscar en el directorio PUBDIR los archivos
destinados al 'usuario'.
Comandos internos:
 * Resumen de comandos.
 CR Siguiente entrada.
 d Borra entrada.
 m [directorio] Mueve la entrada al directorio actual o a uno diferente.
 a [directorio] Mueve todas las entradas al directorio actual o a uno diferente.
 p Imprime el contenido del archivo.
 q / ^d Salida.
Ejemplo:
$ uupick -s sys2
09. Comando 'uustat'
Propósito:
Muestra o cancela los requerimientos de trabajo para el uucp.
Sintaxis:
/bin/uustat [-aq] [-k 'job_id']
Opciones:
### a Muestra todos los trabajos en cola.
### q Muestra los trabajos en cola para cada sistema remoto.
### k 'job_id' Cancela el trabajo designado por 'job_id' en la cola.
Consideraciones:
 Sin opciones, muestra la siguiente información:
 Número de trabajo.
 Fecha y hora en que fué enviado.
 Designa ' S ' como enviado y ' R ' como recibido.
 Nombre del sistema de destino.
 Logname del que envía.
 Tamaño transferido en bytes.
 Nombre del archivo.
10. Comando 'cu'
Propósito:
Conecta el sistema local a un sistema remoto para transferir archivos o para ejecutar comandos en el sistema remoto.
Sintaxis:
/bin/cu [-d] [-l línea] [-s velocidad] { destino }
Opciones:
 d Muestra actividad de diagnóstico.
 l 'línea' Especifica el nombre de dispositivo o 'línea' utilizado(a) para la conexión.
 s 'velocidad' Especifica la 'velocidad' de transmisión.
Consideraciones:
 Los componentes 'destino' del comando pueden ser:
JDCM UNIX SVR4 - NI 10
 Número telefónico de un sistema remoto.
 Nombre del sistema remoto.
 Una dirección LAN.
 Se termina la conexión remota con el comando: ~.
Ejemplo:
$ cu sys01
$ cu -l /dev/term/10
11. Comando 'uux'
Propósito:
Ejecuta comandos en sistemas remotos.
Sintaxis:
/bin/uux [-n] [-m archivo] comando
Opciones:
### n No envía notificación al usuario.
### m 'archivo' Reporta el estado de la transferencia en el 'archivo' nombrado.
Consideraciones:
 Los comandos a ejecutarse están restringidos por el archivo '/etc/uucp/Permissions'
Ejemplo:
$ pr texto | uux host!lp
JDCM UNIX SVR4 - NI 11
BASES DE LA ADMINISTRACION UNIX
A. COMANDOS PARA OPERACIONES DE RESPALDO
01. DEFINICIONES DE ARCHIVAMIENTO Y BACKUP
a) ARCHIVAMIENTO:
 Copia archivos que no se usan a menudo.
 Almacena datos fuera de línea.
 Copia selectivamente archivos y/o directorios.
 Capacidades de restore.
b) BACKUP:
 Copia archivos o el contenido total de un filesystem.
 Capacidades de restore en caso fallara el sistema.
02. Comando 'tar'
Propósito:
Archivador de información.
Sintaxis:
/usr/bin/tar [opciones] [dispositivo de salida] [archivos]
Opciones:
###c Crea una nueva cinta y registra los archivos desde el inicio de la cinta.
###f Declara que el siguiente argumento es el nombre del dispositivo de salida, siendo el default la cinta.
###v Muestra cada archivo en pantalla a medida que se graba.
###x Extrae el contenido del archivo de la cinta.
###t Lista los nombres de los archivos en cinta.
Consideraciones:
 Ventajas:
 Provee una lista de contenido.
 No requiere etiqueta en la cinta.
 Permite recuperaciones totales o parciales.
 Es capaz de copiar archivos de una ubicación a otra.
 Posee mecanismo de checksum incluído.
 Puede usarse en combinación con el comando: find.
 Desventajas:
 No se puede copiar archivos especiales.
Ejemplo:
$ tar cv /usr/acct/user1/memo
$ tar cv /usr/acct/user1
$ tar cv .
$ tar xv
$ tar xv /usr/acct/user1/letter
JDCM UNIX SVR4 - NI 12
03. Comand 'cpio'
Propósito:
Copiar archivos hacia y desde un destino determinado.
Sintaxis:
/usr/bin/cpio [dirección] [parámetros] archivos
Opciones:
###Dirección:
### o copia archivos a la cinta
### i copia archivos de la cinta
### p copia hacia el directorio especificado
###Parámetros:
### c escribe una información de cabecera en ASCII
### v muestra cada archivo en la pantalla
### B transfiere en bloques de 5k
### d crea directorios si se requiere
### l linkea los archivos en lugar de copiar-los (cuando sea posible)
### u copia sin importar la edad del archivo
### m retiene la fecha de modificación
###Archivos:
### Define los archivos, directorios o file-system que desea copiar.
Consideraciones:
 Ventajas:
 Provee una lista de contenido.
 No requiere etiqueta en la cinta.
 Permite restores totales o parciales. Permite copiar archivos especiales.
 Capaz de copiar archivos de una ubicación a otra.
 Puede utilizar el comando find como entrada. Puede utilizarse en combinación con el
comando dd.
 Desventajas:
 No tiene mecanismo de checksum.
 Sintaxis compleja.
Ejemplo:
$ find . -print /tmp/copy
$ cpio -ocv /tmp/copy /dev/rmt/c0d0v
04. Comando 'dd'
Propósito:
 Dump de datos/Convierte y copia archivos/Factores de bloqueo
Sintaxis:
/usr/bin/dd [opciones]
Opciones:
###bs=x Especifica el factor de bloque.
###ibs=x Especifica el factor de bloque de entrada.
###obs=x Especifica el factor de bloque de salida.
###if=x Especifica el archivo de entrada.
###of=x Especifica el archivo de salida.
Ejemplo:
$ find . -print |cpio -ocvB|dd of=/dev/rmt1
$ dd if=/dev/rmt1 of=file1 conv=ascii
$ dd if=/dev/rmt0 ibs=300k obs=5k|cpio -icvdmu
$ cpio -ocvB/tmp/partial|dd of=/dev/rmt0 ibs=5k obs=300k
JDCM UNIX SVR4 - NI 13
B. IMPRESION DE ARCHIVOS - PARTE II
01. Comando 'disable'
Propósito:
Deshabilita una impresora o un trabajo de impresión.
Sintaxis:
/usr/bin/disable [opciones] impresoras
Opciones:
### r 'razón' Asocia una 'razón' a la desactivación
### c Cancela los requerimientos de impresión.
Consideraciones:
 Este comando desactiva las impresoras nombradas.
 Por default, cualquier requerimiento (listado) que se esté imprimiendo en el momento, se reimprimirá desde
el principio (desde la página uno).
 La razón la reporta el comando lpstat o cuando se trata de enviar algún trabajo a la impresora
deshabilitada.
Ejemplo:
$ disable printer1
printer printer1 now disabled
02. Comando 'enable'
Propósito:
Activa las impresoras previamente deshabilitadas.
Sintaxis:
/usr/bin/enable [lista de impresoras]
Consideraciones:
 Habilita las impresoras nombradas en la lista de impresoras para que impriman los pedidos del comando
lp.
 Se puede ver el estado de las impresoras mediante el comandolpstat.
Ejemplo:
$ enable printer1
printer printer1 now enabled
03. Comando 'accept'
Propósito:
Acepta requerimientos de impresión para una determinada impresora.
Sintaxis:
/usr/lib/accept [destino]
Consideraciones:
 El destino puede ser una impresora o una clase de impresoras.
Ejemplo:
$ /usr/lib/accept printer12
JDCM UNIX SVR4 - NI 14
04. Comando 'reject'
Propósito:
Prevenir que la impresora especificada acepte trabajos.
Sintaxis:
/usr/lib/reject [opción] [destino]
Opciones:
###r 'razón' Asocia una razón a la desactivación.
Consideraciones:
 El destino puede ser una impresora o una clase de impresoras.
Ejemplo:
$ /usr/lib/reject -r En mantenimiento print01
05. Comando 'lpmove'
Propósito:
Redirecciona los trabajos entre un destino y otro.
Sintaxis:
/usr/lib/lpmove [trabajos/destino1]destino2
Opciones:
### trabajos Requerimientos de impresión o destino1.(en este caso se desactiva destino1 -el sistema le hace
un reject-)
### destino2 Impresora que recibe trabajo.
Consideraciones:
 No se chequea el estado de aceptación del destino.
 No se mueve aquellos trabajos que no puedan ser manejados por el destino.
Ejemplo:
$/usr/lib/lpmove laser-31 print12
06. Comando 'lpsched'
Propósito:
Activa el sistema spooler.
Sintaxis:
/usr/lib/lpsched
Consideraciones:
 Direcciona los requerimientos de impresión a las impresoras correctas, a través de las interfaces adecuadas.
 Inicia los trabajos del spool normal
Ejemplo:
/usr/lib/lpsched
07. Comando 'lpshut'
Propósito:
Desactiva el sistema spooler.
JDCM UNIX SVR4 - NI 15
Sintaxis:
/usr/lib/lpshut
Consideraciones:
 Detiene el funcionamiento del '/usr/lib/lpsched' así como las impresiones en curso.
 Las impresiones así detenidas se reinician (desde el inicio) cuando se levanta nuevamente el sistema spooler.
Ejemplo:
/usr/lib/lpshut
C. FACILIDADES ADMINISTRATIVAS
01. Comando 'ln'
Propósito:
Crear enlaces múltiples a un objetivo i.e., hacer que un archivo/comando sea reconocido en el sistema por más de un
nombre.
Sintaxis:
/usr/bin/ls [-ns] { archivo_fuente } { archivo_destino]
Opciones:
###n No sobreescribe el objetivo si existe.
###s Crea el enlace simbólico
Consideraciones:
 Un enlace no crea una copia nueva del archivo sino meramente otro puntero a la misma información.
 La opción ' -s ' se utilixa para crear enlaces a través de sistemas de archivos y crea un enlace simbólico que es
un archivo conteniendo la trayectoria del archivo con el que se enlaza.
Ejemplo:
$ ln file1 qtr1
$ ln qtr1 report/anual
$ ln -n filex
ln: filex: file exists
$ ls -il /fs1/fileA
-rw-r--r-- 1 user1 admin 952 May 13 16:45 fileA
$ ln -s /fs1/fileA /fs2
$ ls -il /fs2/fileA
lrwxrwxrwx 1 user1 admin 37 Aug 2 14:17 /fs2/fileA - /fs1/fileA
02. Comando 'od'
Propósito:
Visualización interna de un archivo.
Sintaxis:
/usr/bin/od [opciones] archivo
Opciones:
###b Interpreta los bytes en octal.
###c Interpreta los bytes en ASCII.
###x Interpreta las palabras en hexadecimal.
Consideraciones:
Ejemplo:
JDCM UNIX SVR4 - NI 16
$ cat /tmp/filep | od -xc | lp
03. Comando 'umask'
Propósito:
Fija la máscara para creación de archivos.
Directorio de residencia:
Comando interno
Sintaxis:
umask [máscara octal]
Consideraciones:
 Modifica los niveles de permiso normales que han sido asignados a un archivo o directorio cuando alguno de
éstos es creado. El permiso normal para directorios es 777 y para archivos es 666.
 Cuando se crea un archivo, el sistema resta los números definidos en este comando de los permisos de acceso
normalmente asignados por el sistema.
 Si se omite la máscara, se muestra el valor de la máscara actual.
Ejemplo:
$ umask 022 Remueve el permiso de escritura para el grupo y otros: 777 se convierte
en 755 para directorios y 666 se convierte en 644 para archivos.
04. Comando 'ps'
Propósito:
Reporta el estado de los procesos activos del sistema.
Sintaxis:
/usr/bin/ps [opciones]
Opciones:
### e Muestra la información de todos los procesos que se ejecutan en ese momento.
### f Genera un listado de todos los procesos.
### l Genera un listado detallado.
### u 'usuario' Información del 'usuario'.
### t 'terminal' Información procesada por el 'terminal'.
Consideraciones:
 Sin opciones, se muestra la información referente al terminal que invoca el comando y en forma resumida.
Ejemplo:
$ ps -elf
Detallamos la salida de este comando
### F Flags asociados con los procesos.
### S El estado del proceso:
 O Proceso ejecutándose en un procesador.
 S Durmiendo, esperando que algún evento se complete.
 R Proceso en cola de ejecución.
 I Libre, el proceso se está creando.
 Z Estado zombie, el proceso ha terminado y el proceso padre no lo
espera.
 T Proceso detenido por una señal ya que el proceso padre le está
haciendo un seguimiento.
### UID El número de identificación del usuario al que le pertenece el proceso.
### PID La identificación del proceso.
### PPID La identificación del proceso padre.
### C Uso del procesador para control interno.
JDCM UNIX SVR4 - NI 17
### PRI Prioridad del proceso.
### NI Valor utilizado para el cálculo de prioridades.
### ADDR Dirección en memoria del proceso.
### SZ Tamaño en páginas (o clicks: 1/18.2 seg) de la imagen swapable del proceso en la
memoria principal.
### WCHAN La dirección del evento por el que el proceso está durmiendo. Si está en blanco, está
corriendo.
### STIME Tiempo de inicio del proceso.
### TTY El terminal que controla el proceso (aparece  ?  cuando ningún terminal está al
control)
### TIME Tiempo acumulado de ejecución del proceso.
### COMMAND Nombre del comando.
05. Comando 'kill'
Propósito:
Terminar un proceso.
Sintaxis:
/usr/bin/kill [opciones] PID
Opciones:
###9 Elimina el proceso identificado por PID.
###15 Termina el proceso identificado por PID.
Consideraciones:
Ejemplo:
$ kill -9 2355
06. Comando 'nice'
Propósito:
Ejecutar un comando con prioridad específica.
Sintaxis:
/usr/bin/nice [- 'incremento'] comando [argumentos]
Opciones:
 -/+ 'incremento' Valor numérico indicativo de nivel de prioridad.
Consideraciones:
 El comando se ejecuta con menor prioridad de la normal.
 Las prioridades varían entre 0 (la mayor) y 39 (la menor). El valor normal el 20.
 Un incremento positivo baja la prioridad. Un incremento negativo aumenta la prioridad.
Ejemplo:
$ nice -4 prog1
07. Comando 'nohup'
Propósito:
Impedir que un proceso se cancele antes de tiempo.
Sintaxis:
/usr/bin/nohup comando [argumentos]
JDCM UNIX SVR4 - NI 18
Consideraciones:
Ejemplo:
$ nohup prog2
08. Comando 'cron'
Propósito:
Ejecutar automáticamente las tareas del sistema.
Directorio de residencia:
/usr/bin
Consideraciones:
 Las tareas se ejecutan en el background y se mantiene un tiempo prefijado de ejecución.
 Actividades controladas por el comando crontab.
 El script /etc/rc2 activa el cron.
 Mantiene algunos logs:
 /usr/lib/cron/log
 /usr/lib/cron/OLDlog
 Los archivos crontab que maneja están ubicados en el directorio: /usr/spool/cron/crontab.
 Existen algunos usuarios predefinidos de archivos crontab:
 root
 sys
 adm
 uucp
09. Comando 'crontab'
Propósito:
Los usuarios pueden crear sus propias entradas crontab.
Directorio de residencia:
/usr/bin
Consideraciones:
 El administrador del sistema controla el acceso.
 Procedimiento:
 Liste las entradas crontab actuales y cree un archivo temporal conteniendo esa lista:
$ crontab -l microntab
 Edite el archivo recientemente creado para incluir nuevas entradas.
 Derive los nuevos requerimientos al utilitario cron:
$ crontab  microntab
 Uso del comando crontab:
 Sección de comandos del crontab.
 El comando crontab genera un archivocuyo nombre es el login del usuario.
 El archivo se ubica automáticamente en el directorio: /usr/spool/cron/crontabs.
 El usuario debe estar incluído en el archivo: /usr/lib/cron/cron.allow para poder utilizar el
comando crontab. Si no existe el archivo cron.allow, se utiliza el archivo cron.deny.
 El archivo cron.deny contiene los usuarios que no pueden utilizar el comando crontab.
 Si ninguno de estos archivos cron.allow y cron.deny existe, sólo el usuario root está
permitido de accesar al comando crontab.
 Para visualizar las entradas crontab definidas por usuarios, use el comando:
crontab -l
 Para remover las entradas crontab definidas por usuarios, use el comando
JDCM UNIX SVR4 - NI 19
crontab -r
 Formato de archivos crontab:
 Cada entrada consta de dos secciones. La primera es un conjunto de 5 campos que
determinan los intervalos en los que se ejecuta un comando. La segunda es el nombre
completo del comando con sus opciones y argumentos o redirecciones de E/S.
 Sintaxis:
A B C D E comando
donde:
 A minutos
 B horas
 C dias (del mes)
 D mes
 E dias (de la semana)
 Cada uno de estos campos puede dividirse en subcampos utilizando una coma como separador
de subcampos. También puede expresarse un rango utilizando un guión entre dos números:
0,15,30,45 * * * * /bin/who /tmp/file
0 12 * * 1-5 /bin/who /tmp/filex
10. Comando 'at'
Propósito:
Permite a los usuarios el especificar procesos para ejecutarse en un tiempo posterior.
Sintaxis:
/usr/bin/at [tiempo] [fecha] [+ incremento]
/usr/bin/at [opciones] [trabajo]
Opciones:
### r Remueve el trabajo previamente enviado.
### l Lista todos los trabajos enviados por el usuario.
### tiempo Uno o dos dígitos que repre-sentan horas y cuatro dígitos que representan hora y minutos.
Puede usarse el sufijo am o pm de lo contario, se sobre-entiende formato de 24 horas. También
se reconocen nombres como: noon, now, next, midnight.
### fecha Puede especificarse como nom-bre de mes seguido por número de día o día de la semana
completo o abreviado a tres caracteres. Se reconocen días especiales como today y tomorrow.
### incremento Es simplemente un número se-guido de minute, hours, days, weeks, months, years. También
se acepta el singular.
Consideraciones:
 Se ejecuta por el comando cron.
 Ejecuta los trabajos en un tiempo específico.
 Archivos para acceso:
 /usr/lib/cron/at.allow
 /usr/lib/cron/at.deny
 Limitaciones:
 Asume que el usuario logeado es el propietario de todos los trabajos at .
 Si no existen los archivos indicados, el usuario root es el único permitido de accesar a este utilitario.
 Si no se especifica archivo de salida, el trabajo se ejecuta y se envía la salida via correo del usuario.
EJEMPLO:v
$at 0815am Jan 24
$at 8:15am
$at now + 1 day
$at 1900 thursday next week
$at 2am
pr long_file | lp
CTRL d
$at 5pm Friday
$cat file.prt
pr long_file | lp
$at 2am file.prt
$at -r 580496400.a
$at now + 3 hours chk.users
JDCM UNIX SVR4 - NI 20
11. Comando 'atq'
Propósito:
Muestra la cola de trabajos.
Sintaxis:
/usr/bin/atq [-cn] usuarios
Opciones:
###c Muestra los trabajos en cola en el orden en que fueron enviados para ejecución.
###n Muestra el número total de trabajos en la cola.
Consideraciones:
 Muestra mayor información que el comando 'at -l'.
 Ejecutado sin opciones muestra los trabajos en la secuencia de tiempo de ejecución designada.
Ejemplos:
$ at -l
685996200.a Fri Sep 6 14:30:00 1991
685992660.a Fri Sep 6 13:31:00 1991
685989060.a Fri Sep 6 12:31:00 1991
685987320.a Fri Sep 6 12:02:00 1991
$atq
Rank Execution date Owner Job Queue Job name
1st Sep 6,1991 12:02 userb 685987320.a a stdin
2nd Sep 6,1991 12:31 userb 685989060.a a stdin
3rd Sep 6,1991 13:31 userb 685992660.a a stdin
4th Sep 6,1991 14:30 userb 685996200.a a stdin
$atq -c
Rank Execution date Owner Job Queue Job name
1st Sep 6,1991 14:30 userb 685996200.a a stdin
2nd Sep 6,1991 13:31 userb 685992660.a a stdin
3rd Sep 6,1991 12:31 userb 685989060.a a stdin
4th Sep 6,1991 12:02 userb 685987320.a a stdin
12. Comando 'atrm'
Propósito:
Remueve los trabajos de la cola.
Sintaxis:
/usr/bin/atrm [-aif] trabajos usuarios
Opciones:
###a Remueve todos los trabajos en la cola del usuario que invoca el comando, mostrando una confirmación
de los trabajos removidos.
###i Modo interactivo, solicita confirmación para remover cada trabajo.
###f Fuerza la remoción, sin mostrar mensaje de estado.
Ejemplos:
$atq
Rank Execution date Owner Job Queue Job name
1st Sep 6,1991 12:02 userb 685987320.a a stdin
2nd Sep 6,1991 12:31 userb 685989060.a a stdin
3rd Sep 6,1991 13:31 userb 685992660.a a stdin
$atrm 685996200.a
685996200.a: removed
$ atrm -ia
685996200.a: remove it? n
685992660.a: remove it? n
685989060.a: remove it? n
JDCM UNIX SVR4 - NI 21
13. Comando 'batch'
Propósito:
Permite a los usuarios el especificar procesos para ejecutarse en un tiempo posterior.
Sintaxis:
/usr/bin/batch
comando 1
comando n
CTRL d
Consideraciones:
 Se ejecuta por el comando cron. Ejecuta los trabajos cuando estén disponibles los recursos del sistema.
 Archivos para acceso:
 /usr/lib/cron/cron.allow
 /usr/lib/cron/cron.deny
 /usr/spool/cron/atjobs/###.b
 Limitaciones:
 Si los archivos indicados no existe, el usuario root es el único permitido de accesar a este
utilitario.
 Si no se especifica archivo de salida, el trabajo se ejecuta y se envía la salida vía correo del
usuario.
EJEMPLO:
$batch
lp file1
cal
date
who
CTRL d
$
job ####.b at Mon/June 27/14:00:00
JDCM UNIX SVR4 - NI 22
EL SHELL
A. EL SHELL INTERACTIVO
 El shell es reponsable por la ejecución de todos los programas que se requieran desde un terminal.
 Cada vez que se ingresa una línea al shell, éste analiza la línea y luego determina qué hacer. La línea que
se ingresa al shell se conoce normalmente como línea de comando.
 El shell chequea esta línea y determina el nombre del programa a ejecutarse y qué argumentos debe
pasar al programa, según esta estructura:
 nombre de comando argumentos
 El shell utiliza caracteres especiales para determinar dónde se inicia y termina el nombre de programa y
cada argumento. Estos caracteres se denominan comúnmente espacios en blanco y son: espacio,
tabulador, fin de línea.
 Las ocurrencias múltiples de estos caracteres son ignorados por el shell.
 Se le puede utilizar para instalar software, procedimientos de backup, mejorar la interface de comandos,
customizar los comandos shell.
 Este programa muestra en pantalla el mensaje:
 login:
y espera hasta que alguien tipee algo seguido por RETURN.
 En ese momento, el programa ttymon inicia la ejecución del programa login para concretar el
proceso de logearse.
 Cuando loginse inicia, muestra el mensaje password: y espera por él.
 Una vez ingresados estos datos, login los verifica en un archivo llamado /etc/passwd que contiene
una línea por cada usuario del sistema y ejecuta el programa correspondiente.
B. EL AMBIENTE SHELL
01. QUE SUCEDE CUANDO SE HACE LOGIN?
 Login
 Se verifica en el /etc/passwd la validez del login
 Se inicializan las identificaciones de grupo y usuario
 Se establecen los directorios base y el shell
 Se ejecutan los comandos del /etc/profile
 Se ejecutan los comandos del ./profile
 Aparece el prompt del shell
02. QUE HACE EL '/etc/profile'?
 Muestra el contenido del /etc/motd.
 Le notifica si tiene correo.
 Fija la máscara de creación de archivos.
 Fija la hora según zona.
JDCM UNIX SVR4 - NI 23
03. QUE HACE EL './profile'?
 Es realmente un script shell. Es un archivo escondido (debido al punto antes del nombre).
 Se le incluyen los comandos que desea ejecutar al momento de logearse.
 Contiene variables predefinidas y determina su ambiente de trabajo.
Ejemplo:
$ cat .profile
PATH=:/bin:/usr/bin:/etc
MAIL=/usr/mail/usuario
TERM=vt100
PS1=Comando?: 
export TERM PATH MAIL PS1
date
04. PROCEDIMIENTOS SHELL
a) EXPRESIONES REGULARES
 Se definen como un conjunto de uno o más grupos de caracteres.
 Son interpretados por el comando que las requiere.
b) METACARACTERES
 ^ Inicio de línea.
 $ Fin de línea.
  Caracter especial de ESCAPE.
 . (punto) un solo caracter .
 * Cero o más ocurrencias del caracter anterior al ' * '.
 [] Rango o lista de caracteres.
 [^] Fuera del rango.
c) ENMASCARAMIENTO
  Remueve el significado especial de los siguientes caracteres: ', , , #, *, ?, ., |, ;, (, ), [, ],
SPACE, CR, TAB. Los siguientes caracteres permanecen inalterables: $, `, .
 '' Igual que el anterior pero remueve adicionalmente los caracteres: $, `,.
  Remueve el significado especial del caracter que le sigue.
d) PROCESOS EN EL BACKGROUND
 Cuando se requiere ejecutar varios procesos batch.
 Normalmente, se termina uno y se inicia el otro.
 Al enviar los procesos al background podemos ejecutarlos todos a la vez y liberar el terminal para otros
procesos.
 La estructura del proceso a ser enviado al background es:
 comando [opciones] argumentos 
e) EJECUCION ALTERNATIVA DE PROGRAMAS
 Los siguientes comandos permiten ejecutar un programa sin crear un nuevo proceso:
 . (Dot o Punto): Ejecuta un programa como parte del proceso actual. No se pueden
ejecutar comandos compilados:
. programa
JDCM UNIX SVR4 - NI 24
 exec Es un comando incluído en el shell. No se crea un nuevo proceso para ejecutar el
programa i.e., reemplaza totalmente al proceso en ejecución. No ejecuta programas
compilados:
exec programa
 El Bourne shell permite encontrar errores en los programas con dos opciones:
 v muestra cada línea a medida que se ejecuta.
 x Muestra los comandos y sus argumentos a medida que se ejecutan.
f) VARIABLES DEL SISTEMA
 Asignamos un valor a una variable:
 variable=valor
 Obtenemos luego su contenido:
 echo $variable
 Logramos que todos los comandos siguientes utilicen este dato (si lo necesitan):
 export variable
 Los nombres de variables deben empezar con una letra y pueden consistir de letras, dígitos y caracteres para
subrayado.
 No puede haber espacios antes o después del signo  = .
 Cuando se asigna un valor que contiene espacios a una variable shell, encierre el dato entre comillas.
g) VARIABLES PREDEFINIDAS
MAIL Nombre del archivo que el utilitario ' mail ' utiliza para almacenar su
correo.
HOME Directorio base del usuario.
PATH Conjunto de directorios que usa el shell cuando busca comandos para
ejecutar. Los busca en el orden en que se encuentran.
PS1 Prompt primario (usualmente ' $ ')
PS2 Prompt secundario (normalmente '  ' o ' ? ')
IFS Separador de campos interno (usualmente espacio, tabulador, nueva línea)
h) COMO MOSTRAMOS LAS VARIABLES AMBIENTALES?
env Muestra las variables que se exportan hacia o por el shell.
set Muestra las variables locales o aquellas que no han sido exportadas y no
son parte del ambiente del sistema.
Ejemplo:
$env
HOME=/dp/usr1
LOGNAME=usr1
MAIL=/usr/mail/usr1
PATH=:/bin:/usr/bin
TERM=vt100
TZ=EST5:OEDT
$set
HOME=/dp/usr1
LOGNAME=usr1
MAIL=/usr/mail/usr1
PATH=:/bin:/usr/bin
TERM=vt100
TZ=EST5:OEDT
IFS=
PS1=$
PS2=
JDCM UNIX SVR4 - NI 25
05. REDIRECCION DE ENTRADA/SALIDA
 En general, los comandos UNIX:
 Toman una pieza de información.
 La procesan de alguna forma.
 Pasan el resultado de esta ejecución a un destino.
 Pero,
 De dónde viene la información que se va a procesar?.
 A dónde van los resultados de esta ejecución?.
 Debemos conocer:
entrada estandard Son los argumentos que se pasan al comando (provienen de archivos o
directamente del teclado), está identificada como '0'.
salida estandard Esta salida puede ser un terminal, archivo o una impresora, está
identificada como '1' y representa el resultado de un comando.
error estandard El terminal recibe todos los mensajes de error y se identifica como '2'.
 El propósito es redireccionar estos estándares desde un terminal a un archivo o utilitario UNIX.
a) SIMBOLOS Y COMANDOS DE REDIRECCION
Entrada  Redirecciona la entrada desde un archivo dado.
Salida  Redirecciona la salida a un archivo dado.
 Adiciona la salida a un archivo dado.
| Redirecciona la salida a un comando dado.
tee Redirecciona la salida a destinos múltiples.
Ejemplo:
$ cat nombres  empleados
$ cat nombres  empleados
$ cat archivo1 archivo2 2errores
$ lp archivo3 1listalp
$ find / -print | wc -l 1lineas 2/dev/null
$ find / -print | wc -l 1lineas 2^1
$ ed archivo1 edscript archivo2
$ a.out dato1 resultado
b) ENCADENAMIENTOS
 Un encadenamiento (pipe) UNIX es una herramienta utilizada para conectar comandos entre sí.
 La salida estandard de uno es la entrada estandar de otro.
 Se elimina la necesidad de archivos temporales.
 Los símbolos de redirección trabajan con archivos y el símbolo de encadenamiento ( | ) trabaja
con comandos:
cmd1 [opciones] [argumentos] | cmd2 [opciones] [argumentos]
Ejemplo:
$ who | sort
$ ls *.cob | lp
06. COMANDOS EN SECUENCIA
 En una sola línea de comando puede haber varios comandos.
 Se pueden ejecutar uno tras otro utilizando como separador de comando el caracter ( | ).
 Si la línea de comando es demasiado larga, se puede continuar en la siguiente línea con el caracter (  ) y
CR inmediatamente después.
JDCM UNIX SVR4 - NI 26
 Podemos agrupar comandos y hacer que su salida esté combinada: ( ) :
 $ (cd; ls)
07. VARIABLES PROPIAS DEL SHELL
$# Número de argumentos en el comando a ejecutarse.
$? Estado de salida del último comando ejecutado:
 0 Ejecución completa y exitosa
 1 Ejecución completa pero no exitosa
 2 Condición de error
$$ Identificación del proceso en ejecución.
$! Identificación del último proceso que se ejecuta en el background.
$* Valor que representa todos los argumentos de la línea de comando.
$0 Nombre del script shell.
$1-$9 Los primeros 9 argumentos pasados al script shell.
08. CONSTRUCCIONES ADICIONALES
Se dividen en:
 Condicionales propiamente dichas:
 test
 if ... then ... else
 case
 Anillos y sus controles:
 for
 until
 while
 break
 continue
 expr
 exit
09. SINTAXIS
a) if ... then ... else
if lista de comandos 1
then
lista de comandos 2
else
lista de comandos 3
fi
Ejemplo:
if [ -d $1 ]
then echo directorio $1: 
ls $1
else cat $1
fi
b) case
case string in
pattern) lista de comandos;;
.
.
JDCM UNIX SVR4 - NI 27
pattern) lista de comandos;;
esac
Ejemplo:
echo (v) ventas
echo (a) administracion
echo (d) desarrollo
echo nnSeleccione: c
read dato
case $dato in
v|ventas) programa1;;
a|admin) programa2;;
d|desa) programa3;;
*) echo  dato invalido ;;
esac
c) for
for variable in lista de palabras
do
comando1
.
.
comando2
done
Ejemplo:
for i in prog1 prog2
do
diff $i.c /usr/lib/$i.c
done
d) while
while lista de comandos 1
do
lista de comandos 2
done
Ejemplo:
while sleep 30
do
who | grep $1
done
e) until
Equivale a while - not
Ejemplo:
until who | grep $1
do
sleep 30
done
f) test
 Permite chequear archivos o directorios, si son ejecutables, leíbles o escribibles, así como
comparaciones entre strings y enteros algebraicos.
 Chequeo de archivos:
Opciones Verifica que
d El directorio exista
f El archivo exista
r Sea leíble
w Sea escribible
x Sea ejecutable
JDCM UNIX SVR4 - NI 28
s Contenga información
Ejemplo:
$test -w archivo
$echo $?
0
 Chequeo de strings:
Opciones Verifica si
n Contiene información
z Su longitud es 0
= Hay igualdad entre strings
! Hay diferencias entre strings
Ejemplo:
$var1=rojo
$var2=azul
$test $var1 = $var2
$echo $?
0
 Operadores relacionales:
Opciones Significado
-eq igual a
-ne diferente a
-lt menor que
-le menor o igual que
-gt mayor que
-ge mayor que o igual
Ejemplo*:
$num=3
$test $num -lt 5
$echo $?
0
 Operadores lógicos: (tenga en cuenta los símbolos)
Opciones Significado
! negación
-a operación AND
-o operación OR
Ejemplo:
$num=5
$test $num -eq 4 -o $num -le 5 ; echo $?
0
 Operadores y y o:
Opciones Significado
|| OR condicional
 AND condicional
Ejemplo:
$test -f $1 || echo No existe $1
g) break
 Termina el anillo más interno.
Ejemplo:
while echo Ingrese un dato: 
read dato1
do
case $dato1 in
q) break ;;
JDCM UNIX SVR4 - NI 29
quit) break ;;
) echo Ingrese un dato por favor ;;
*) echo $dato1  archivo ;;
esac
done
h) continue
 Termina una iteración
Ejemplo:
while echo Ingrese un dato: 
read dato1
do
case $dato1 in
q) break ;;
quit) break ;;
) continue ;;
*) echo $dato1  archivo ;;
esac
done
i) expr
 Evalúa los argumentos como expresión. Posee las operaciones aritméticas básicas.
EJEMPLO:
ctrl=0
while echo Ingrese un dato: 
read dato
do
case $dato in
q) break ;;
) echo $ctrl datos procesados
break ;;
[A-Z]) echo Dato inválido
exit 1 ;;
*) expr $dato * $dato
ctrl=`expr $ctrl + 1` ;;
esac
done
exit 0
Curso: Unixware
JDCM UNIX SVR4 - NI a
APENDICES
BIBLIOGRAFIA
UNIX Networking
Stephen Kochan  Patrick Wood
Hayden Books UNIX System Library
UNIX System Administration
David Fiedler  Bruce Hunter
Hayden Books UNIX System Library
UNIX Shell Programming
Stephen Kochan  Patrick Wood
Hayden Books UNIX System Library
Tricks of the UNIX Masters
Russell Sage
The Waite Group SAMS
System V Operating System
User's Guide, ATT
Notas
i Caracteres precedidos por ( ^ ) se denominan caracteres de control y se obtienen presionando a la vez las teclas de control
CTRL y la tecla deseada.
ii Encuentra una oración al encontrar un punto seguido de por lo menos dos espacios, o un punto y el último caracter no blanco
de la línea.
iii Se define un párrafo como un texto hasta la siguiente línea en blanco.
iv El comando :pre fuerza al sistema a preservar el buffer de edición.
v Existen dos maneras de suministrar información al comando at:
a. Luego de ejecutar el comando at, presione RETURN y el sistema UNIX espera que ingrese los comandos que desea
ejecutar hasta que presione CTRL d.
b. Cree un archivo conteniendo los comandos a ejecutarse y suminístrelo al comando at utilizando el símbolo de
redirección.
UNIXWARE INTERMEDIO
JDCM NI 1
EJERCICIOS
1. Explique las diferencias entre los conjuntos de variables que se han estudiado.
2. Construya un script que solicite al usuario el mes, dia, y año de su nacimiento y luego lo muestre.
3. El ejercicio anterior pero indicando los parámetros solicitados en la misma línea de comando.
4. El ejercicio anterior pero que muestre la información de tres maneras diferentes, las cuales deben construirse en
un script adicional.
5. El ejercicio anterior debe ejecutarse de por lo menos tres maneras diferentes. Anote los resultados.
6. Construya un script que acepte doce palabras en la línea de comando y las muestre una por una en pantalla.
7. Construya un script que cambie el modo de uno o más archivos a ejecutables. Los datos deben darse en la misma
línea de comando.
8. Muestre el número de archivos que ingresan en la línea de comando del ejercicio anterior.
9. Se requieren dos script que trabajen sobre un archivo de nombre “TELEFONO” y cuyo formato es:
Nombres y Apellidos Teléfono Dirección
a El primero debe adicionar al archivo indicado un registro completo el cual debe suministrarse en la línea de
comando.
b El segundo debe mostrar la línea del archivo indicado que concuerde con cualquiera de los campos
relacionados con el mismo.
10. Escriba un script que solicite al usuario un nombre de archivo, verifique si es válido, y muestre el resultado de
esta prueba.
11. Escriba un script que solicite y acepte mes, día, y año como entrada estándar. Este programa debe verificar el
número de argumentos y brindar los mensajes de error apropiados. El programa debe aceptar el mes ya sea
escrito totalmente, abreviado a tres letras, o utilizando su número relativo. Su salida debe ser simplemente la
fecha ingresada en formato:
Mes Día, Año.
12. Desarrolle un script que no sobreescriba un archivo cuando se trata de copiar algún otro sobre él, sino que
previamente se asegure de lo que va a hacerse.
13. Escriba un script que muestre las características completas del primer archivo ordinario que se encuentre en su
directorio de trabajo.
14. Desarrolle un medio para verificar una lista de usuarios logeados cada 60 segundos. Si la lista actual es diferente
a la anterior, muéstrela en la salida estándar.
15. Con una sola línea de programa, comente e indique el número de usuarios en el sistema.
16. Construya un script que permita realizar las siguientes tareas periódicamente:
a Encontrar todos los archivos que no han sido accesados en 90 días.
b Encontrar todos los archivos de usuarios que estén vacíos.
c Listado detallado de todos los directorios ‘lost+found’.
d Reportar los archivos pertenecientes a root, con el bit ‘setuid’ puesto.
e Listar los archivos de usuarios que son permitidos de escribir por other.
f Encontrar todos los directorios que tienen más de 6 bloques de tamaño.
g Dar una lista de todos los signons que tienen estado de curso.
h Encontrar todos los archivos core.
i Imprimir las estadísticas de disco libre, con el tamaño de cada sistema de archivos.
j Imprima la estadística de uso de disco para el directorio /usr/acct.
17. ¿Cuál es el valor actual de ‘umask’?.
18. Copie los archivos de un directorio /abc (conteniendo a su vez 2 sub-directorios ./bcd y ./cde al directorio /tmp.
Utilize todas las formas que conozca.
19. Cómo encontraría todos los “ascii text” del directorio /etc?.
20. Cómo reemplazaría este texto por “archivo texto”?.
21. Cómo haría esto empleando sólo una línea de comando?. Utilize el editor ‘vi’.
22. Cómo imprimiría en la impresora printer las 5 primeras líneas de los archivos del problema anterior?.
23. Cómo imprimiría en la impresora anterior la 2 últimas líneas del archivo /etc/profile, con una cabecera?. Utilize
todas las formas conocidas.
24. Qué comandos son válidos de ejecutar por un usuario simple?:
UNIXWARE INTERMEDIO
JDCM NI 2
a) who -Hu | lp
b) rm a*
c) cd /etc/bin
d) cp /etc /tmp
e) cp /etc/dir1/file34 /usr/dir1
f) vi ./*.c
g) cat -x file?.c
h) cat file[0-9][0-9].* | lp
i) cp “abc acb” ../tmp
j) cp “abc*abc” /usr/tmp
k) echo “bcdnbcd”
l) head +20 filexyz
m) split -30 f24 abcdefghijklm
n) umask 000
o) chmod 368
p) mesg -no
q) write user03 /dev/tty106
r) cancel printer
s) /usr/lib/lpsched
t) set  file1;env  file1
25. Encuentre todos los archivos en un directorio determinado que contengan un determinado texto. Tanto el
directorio como el texto deben ser suministrados en la línea de comando. Debe verificarse la existencia del
directorio.
26. El ejercicio anterior pero solicitando los datos.
27. Los dos ejercicios anteriores combinados: si no se suministran los datos en la línea de comando, deben
solicitarse.
28. Complete los siguientes comandos de edición:
CAMBIO BORRADO COPIADO
OBJETO: una palabra
dos palabras
tres palabras atrás
una línea
hasta el fin de la línea
hasta el inicio de la línea
un solo caracter
DESDE EL CURSOR HASTA: el final de la pantalla
la siguiente línea
la siguiente oración
el siguiente párrafo
un patrón dado
el final del archivo
la línea número 13
UNIXWARE INTERMEDIO
JDCM NI 1
PREGUNTAS DE EXAMEN
Para todos los problemas/ejercicios siguientes, donde convenga o exista más de una
alternativa de solución, asuma lo que crea conveniente y detalle en base a qué toma su
decisión.
1.- Construya un script el cual se encarge de realizar las tareas de backup normales indicando el directorio o
archivos a trabajar y el dispositivo a emplear. Utilize los comandos ‘tar’ y ‘cpio’ i.e., un script por cada
comando.
2.- Utilizando el editor ‘ed’, construya un script que realice lo siguiente: tome las modificaciones de un archivo ‘A’
y las efectúe sobre otro archivo ‘B’. Se supone que el archivo ‘B’ es un texto de ayuda que se va a actualizar en
base al archivo ‘B’.
3.- Desarrolle un script utilizando una sola línea de comando el cual sortee el contenido de dos directorios
suministrados al script. Hay que verificar que existan estos directorios y mostrar los errores correspondientes.
4.- Desarrolle un script que muestre el contenido de dos directorios suministrados en dos columnas, cada una
indicando el directorio que se trabaja. Mostrar la información por pantalla. Debe verificarse la existencia de los
directorios. Al final del trabajo debe mostrarse el número de archivos contenidos en cada directorio, así como la
utilización que hacen de disco.
5.- Detalle las diferencias (si existen) entre los dos comandos siguientes:
a) grep “$1” `find “$2” -print`
b) find “$2” -print | while read F
do
grep “$1” $F
done
6.- Utilizando la variable del sistema IFS desarrolle un script que permita ubicar un comando a partir de la variable
PATH asignada al entorno. Debe aceptar una de dos opciones: ‘-l’ para listado largo y ‘-c’ para mostrar sólo el
directorio donde se encuentra el comando indicado. Deben controlarse los errores posibles. De no existir el
archivo en el PATH del usuario, enviar un mensaje y proceder a su búsqueda en todo el directorio ‘/usr’.
7.- Desarrolle un script que lea el archivo ‘/etc/vfstab’ y monte todos los filesystem posibles previa verificación de
los mismos. Asegúrese que sólo el superusuario pueda realizar esta operación y se haga en modo mono-usuario
- los mensajes deben ser totalmente descriptivos -.
8.- Para efectuar un backup se requiere la información de todos los filesystem sin directorios temporales (/tmp,
/usr/tmp) ni ‘lost+found’. Esta información debe estar iniciada directamente por el nombre de los archivos a
trabajar. debe emplearse el editor de líneas ‘ed’ para esto.
9.- Adicione los caracteres ‘’ al final de cada línea de un texto cualquiera. Utilice el editor ‘ed’.
10.- Escriba un script que acepte como argumento un dígito entre 0 y 9 y lo convierta en su equivalente en castellano.
Debe aceptarse exactamente un dígito. Controlar los errores.
11.- Escriba un script que imprima el tipo de caracter (número / mayúscula / minúscula / caracter especial)
de un solo caracter dado como argumento. Controlar los errores.
12.- Escriba un programa que ejecute en el background y cuente el número de usuarios logeados al final de cada
intervalo y también el número de procesos ejecutados durante el intervalo. Permita especificar el intervalo con
una opción ‘-t’ con un valor por defecto de 10 minutos.
13.- Escriba un programa que busque en un archivo un patrón determinado, de forma similar al comando ‘grep’. Para
cada línea que se encuentre en el archivo muestre una “ventana” alrededor de la línea que se encuentre i.e.,
muestre la línea que precede a la que se encuentra y la que sigue a ésta línea encontrada. Asegúrese de manejar
apropiadamente los casos especiales en que el patrún concuerda con la primera y última línea del archivo.
UNIXWARE AVANZADO
JDCM UNIX SVR4 - NA/1 i
TABLA DE CONTENIDO
ILUSTRACIONES: Pág
Figura No. 1: Directorios y archivos ‘lp’ 25
Figura No. 2: Proceso de trabajos de impresión 29
PARTES CONSTITUTIVAS: Pág
EDITORES DE TEXTOS 1
EL SHELL 4
CONFIGURACIONES 21
APENDICES a
CONTENIDO: Pág
TABLA DE CONTENIDO i
Comandos de Referencia en Línea ii
EDITORES DE TEXTOS 1
EDITOR ‘VI 1
01. Verificación de patrones 1
02. Ejecución de comandos desde ‘vi’ 1
03. Construcción de macros en ‘vi’ 1
04. Ejemplos desarrollados 2
05. Más Ejemplos 3
EL SHELL 4
EL BOURNE SHELL 4
01. El lenguaje programador de comandos 4
EL ‘KORN’ SHELL 7
01. Características 7
02. Control de tareas 8
03. Generalidades 9
EL EDITOR ‘SED’ 9
01. El editor batch de strings 9
02. Ejemplos 10
AWK, LENGUAJE DE PROGRAMACION 10
01. El comando 10
02. Estructura 11
03. Ejemplos 13
COMANDOS ADICIONALES 15
01. Comando ‘basename’ 15
02. Comando ‘dirname’ 15
03. Comando ‘echo’ 15
04. Comando ‘expr’ 16
05. Comando ‘getopts’ 17
UNIXWARE AVANZADO
JDCM UNIX SVR4 - NA/1 ii
06. Comando ‘compress’ 17
07. Comando ‘script’ 18
08. Comando ‘sum’ 18
09. Comando ‘tee’ 19
10. Comando ‘timex’ 19
11. Comando ‘tput’ 19
12. Comando ‘tr’ 20
CONFIGURACIONES 21
MANEJO DE USUARIOS Y GRUPOS – REPASO 21
01. Archivo ‘/etc/group’ 21
02. Comando ‘newgrp’ 21
03. Archivo ‘/etc/passwd’ 21
04. Archivo ‘/etc/default/passwd’ 22
05. Archivo ‘/etc/shadow’ 22
ARCHIVOS Y DIRECTORIOS 22
01. Archivo ‘/etc/inittab’ 22
02. Directorio ‘/dev’ 24
03. Archivo ‘/etc/ttydefs’ 24
04. Archivo ‘/etc/ttytype’ 24
05. Archivo ‘/usr/lib/terminfo’ 24
EL SISTEMA SPOOL 25
01. Introducción 25
02. Directorio ‘/etc/lp’ 25
03. Directorio ‘/var/spool/lp’ 26
04. El Utilitario ‘lpadmin’ 27
05. Comando ‘lpusers’ 28
06. Procesamiento de requerimientos de impresión 28
APENDICES a
BIBLIOGRAFIA a
NOTAS 1
Comandos de Referencia en Línea
1. Los siguientes comandos UNIX le brindan acceso en línea a la información del manual de referencia:
MAN Accesa a las entradas del manual de referencia en el sistema.
Utilícelos siempre!
JDCM UNIX SVR4 - NA/1 1
EDITORES DE TEXTOS
EDITOR ‘VI
01. Verificación de patrones
1. Al hacer reemplazos globales, puede buscar no sólo cadenas fijas de caracteres sino también patrones de
palabras los cuales se denominan ‘ expresiones regulares ’. Estas expresiones regulares ayudan a
efectuar búsquedas de palabras en un contexto ya que en una búsqueda podemos encontrarnos con
algunas ocurrencias que no deseamos.
2. Mencionaremos algunas (todas las cuales no se espera que funcionen en todas las implementaciones):
. Verifica un solo caracter excepto CR.
* Verifica cero o más caracteres iguales al que precede al ‘ * ’.
[] Verifica cualquiera de los caracteres encerrados entre los corchetes.
(...) Salva el patrón encerrado entre paréntesis en un buffer especial (numerado de 1 a 9), por línea.
n Obtiene el patrón ‘ n ’ previamente salvado (contado de izquierda a derecha.
{n,m} Verifica un rango de ocurrencias del caracter que lo precede. ‘ n ’ y ‘ m ’ son enteros entre 0 y
256. El primero especifica el número de ocurrencias a verificar:
{n} Obtiene exactamente ‘ n ’ ocurrencias.
{n,} Obtiene por lo menos ‘ n ’ ocurrencias.
 Muestra el patrón completo de búsqueda cuando se utiliza en una cadena de reemplazo (es el
patrón encontrado).
02. Ejecución de comandos desde ‘vi’
1. Sabemos que se pueden ejecutar comandos UNIX desde ‘vi’:
r file Lee el contenido del archivo ‘file’ en la línea después del cursor.
!cmd Genera un nuevo shell donde se ejecuta el comando ‘cmd’.
r!cmd Lo mismo que antes pero el resultado lo guarda en en texto.
2. Pero también podemos enviar un bloque de texto como entrada estándard a un comando UNIX cuya
salida reemplaza el bloque de texto en el buffer. Esto puede hacerse ya sea desde ‘ex’ o ‘vi’. La
diferencia principal entre estos dos métodos es que el bloque de texto se indica con direcciones de líneas
en ‘ex’ y con objetos de texto en ‘vi’.
90,99!sort Pasa las líneas 90 a 99 al comando ‘sort’ y la salida de éste reemplaza las líneas
correspondientes en el texto.
3. En ‘vi’ esta secuencia se invoca al tipear un signo de exclamación seguido de cualquier objeto ‘vi’ que
indica un bloque de texto (debe manejar más de una línea), y luego el comando UNIX a ejecutar.
4. Tenemos a continuación algunos comandos interesantes:
!)cmd Pasa el texto de la oración siguiente a ‘cmd’.
!% Ejecuta el comando script que se está editando.
!! Repite el último Comando ‘!%’.
03. Construcción de macros en ‘vi’
( a ) Comando ‘map’
1. Asigna una secuencia de comandos a una tecla no usada. Se usa en modo comando.
2. Opciones:
map x secuencia Define el caracter ‘x’ como una ‘secuencia’ de comandos de edición.
unmap x Deshabilita la secuencia definida para ‘x’.
map Lista los caracteres que están mapeados actualmente.
( b ) Comando ‘ab’
1. Asigna un texto (o frase) a una abreviatura (que puede ser una o más letras) las que se
expanden automáticamente en el texto, dondequiera tipee esta abreviatura (siempre que
aparezca como palabra individual y no como parte de otra palabra). Se usa en modo de
inserción.
UNIXWARE AVANZADO
JDCM UNIX SVR4 - NA/1 2
2. Opciones:
ab abrev frase Comando para insertar la ‘frase’ como abreviatura ‘abrev’.
( c ) Función ‘@’
1. Se utilizan los buffer nombrados (aquellos entre la ‘ a ‘ y la ‘ z ‘).
2. Modo de creación:
 Escriba la línea de comando en su texto.
 Luego la borra en un buffer nombrado.
 Ejecute el contenido de este buffer anteponiendo el caracter ‘ @ ‘ al nombre de este
buffer.
 El comando ‘@@’ repite el último comando ‘ @ ’.
04. Ejemplos desarrollados 1
Ejemplo No. 01
1. Supongamos que desee reemplazar la palabra monitor por pantalla en todo el texto:
:g/pantalla/s//monitor/g
2. Pero al continuar la edición del texto encontramos palabras como monitors, amonitormiento, monitorzo.
Regresamos a nuestro último buffer con la instrucción:
:e!
3. Y tratamos de limitar nuestra búsqueda:
:g/pantalla /s//monitor /g
4. Pero ahora no reemplaza las palabras: ‘ pantalla ’, ‘ pantalla ’, ‘ pantalla ’, etc. Al encerrar el patrón de
búsqueda con ‘  ’ y ‘  ’, especificamos que el patrón debe encontrar solamente palabras completas,
con o sin signos de puntuación subsecuentes:
:g/pantalla/s//monitor /g
5. Como ‘  ’ y ‘  ’ están disponibles sólo en ‘ vi ’ (y ‘ ex ’), puede utilizarse una forma alternativa:
:g/pantalla([ ,.;:!?])/s//monitor1/g
Lo cual busca y reemplaza ‘ pantalla ’ seguida de un blanco o de cualquiera de los signos de puntuación
indicados. Adicionalmente, el caracter que se encuentra se salva utilizando ‘ ( ’ y ‘ ) ’y se restaura al
lado derecho utilizando ‘ 1 ’.
Ejemplo No. 02
1. Supongamos que debemos hacer cambios menores a los nombres de nuestros modelos de computadoras
para actualizar los manuales correspondientes. El modelo U5000 debe renombrarse Series U5000, junto
con los modelos U6000 y U7500:
:g/U[567][05]00/s//Series /g
2. Pero después decidimos quitar el ‘U’ del número de modelo y colocar ‘Series’ después de este número:
:g/(Series) U([567][05]00)/s//2 1/g
3. O, dada la siguiente lista de partes:
UN6350–FPU
UN6150–CPU
UN6050–8IO
UN6050–4MB
reemplazar ‘50’ por ‘65’:
:g/UN6(013)50/s//UN6165/ ó,
:g/UN6(013)50/s/50/65/g
UNIXWARE AVANZADO
JDCM UNIX SVR4 – NA/1 3
Ejemplo No. 03
1. Puede editar bloques de texto delimitado por patrones.
2. Suponga que tiene un manual de 150 páginas las cuales contienen las siguientes secciones: Modelo,
Características, Descripción, Opciones.
MODELO
U6000/35
CARACTERISTICA
I80486@33MHZ
0 CACHE
MONOPROCESADOR
64 MB (MEMORIA)
64 USUARIOS (MAX)
42 GB DISCO (MAX)
DESCRIPCION
ARQUITECTURA EISA
BUS SCSI
OPCIONES
MODELO
U6000/65
MULTIPROCESADOR
5 PROC X EQUIPO
CARACTERISTICAS
I80486@33MHZ
256 KB CACHE
256 MB (MEMORIA)
256 USUARIOS (MAX)
42 GB DISCO (MAX)
DESCRIPCION
ARQUITECTURA EISA
BUS DE MEMORIA DE 100 MB/SEG
BUS SCSI
OPCIONES
y debemos mover el párrafo correspondiente a DESCRIPCION sobre el de CARACTERISTICAS, en
todas las 150 páginas!. Y lo haremos con un solo comando!:
:g/CARACTERISTICAS/,/DESCRIPCION/–1,mo/OPCIONES/–1 1
05. Más Ejemplos
:g/^$/d Borre las líneas en blanco.
://usr/tomas/s///usr/linda/g Modifica una lista de nombres completos. Atención a los ‘  ‘.
:g:/usr/tomas:s::/usr/linda:g Lo mismo que el comando anterior pero reemplazando el caracter
delimitador.
:1,10g/./s//;/g Cambie todos los puntos por punto y coma entre las líneas 1 y 10.
:g/(.*) – (.*)/s//2 – 1/ Invierte el orden de los items separados por guión en una lista.
:g/^Ejemplo[ s:]/s//Ejemplos: /g Estandariza los varios usos de una palabra o cabecera.
:g/[Aa]yuda/s//AYUDA/g Cambia todas las ocurrencias de la palabra ‘ayuda’ o ‘Ayuda’ por
‘AYUDA’.
:g/ */s// /g Reemplaza uno o más esapcios con un solo espacio.
:g/: */s//: /g Reemplaza uno o más espacios que siguen al caracter ‘ : ’ con dos espacios.
:g/([:.]) */s//1 /g Reemplaza uno o más espacios que siguen a un ‘ . ’ o a un ‘ : ’ con dos
espacios.
:g/ *$/s/// Borra todos los blancos iniciales.
:g/[1–9].[1–9]*(.*)/s//1/g Remueve la numeración manual de las cabeceras de sección.
X{1,10} Identifica de una a diez letras X consecutivas.
[A-Za-z]{4,7} Identifica una secuencia de letras/palabras entre 4 y 7 letras de longitud.
[a-zA-Z]{7} Identifica exactamente 7 letras.
.{10} Identifica exactamente 10 caracteres (sin importar qué son)
+{5,} Identifica al menos 5 signos + consecutivos.
^(.) Identifica el primer caracter de la línea, cualquiera que sea, y lo almacena en
el registro 1
^(.).*1$ Identifica todas las líneas en las que el primer caracter de la línea es el mismo
que el último caracter en la misma línea
^(…)(…) los primeros tres caracteres de la línea se almacenan en el registro 1, y los
siguientes tres en el registro 2
(.*)—(.*) identifica todos los caracteres hasta la primera tabulación y los asigna al
registro 1, e identifica todos los demás caracteres que siguen asignándolos al
registro 2
UNIXWARE AVANZADO
JDCM UNIX SVR4 – NA/1 4
EL SHELL
EL BOURNE SHELL
01. El lenguaje programador de comandos
1. Es el lenguaje para procesamiento de comandos estándard del sistema operativo UNIX.
2. Su sintaxis es la siguiente:
/bin/sh [–entvx][r][–c string] args
donde:
e Termina inmediatamente si un comando termina con estado de salida diferente a cero.
n Lee los comandos pero no los ejecuta, útil para debugging.
t Termina luego de leer y ejecutar un comando.
v Imprime las líneas de entrada al shell a medida que se leen.
x Imprime los comandos y sus argumentos a medida que se ejecutan.
r Se invoca en forma restringida.
c ‘string’ Los comandos se leen de ‘string’.
3. Como vemos, el comando ‘ sh ’ es un lenguaje de programación de comandos que ejecuta los comandos
que lee de un terminal o archivo.
4. Posee una secuencia determinada para la interpretación de los comandos:
 Se busca de izquierda a derecha los terminadores ( newline, : ,  , fi , done , esac,  , || ).
 Se sustituye variables y parámetros.
 Se sustituye comandos.
 Se establece la redirección de entrada/salida.
 Se particiona en palabras usando $IFS.
 Se fija la línea de comando (el comando mismo es identificado así como su ubicación, si es interno
o si pertenece a un filesystem).
 Se genera los nombres de archivo.
 Se ejecuta el comando.
5. Cuando una línea empieza con ‘ # ’, se trata la línea como comentario.
6. Se puede ejecutar una lista de comandos en un sub–shell:
( lista de comandos )
7. Se puede ejecutar una lista de comandos en el shell actual:
{ lista de comandos; }
8. Se puede definir una función que se referencia por el nombre: 2
nombre de función () { lista de comandos; }
9. A los parámetros posicionales ( $1, $2,..., $9 ) se les puede asignar un valor con el comando interno
‘set’.
10. A los parámetros clave (variables) se les asigna un valor.
11. No puede haber una función y una variable con el mismo nombre.
12. Se muestran a continuación las formas posibles de sustitución de parámetros: 3 4
${parámetro} Se sustituye el valor de ‘parámetro’, si existe.
${parámetro:–palabra} Si ‘parámetro’ no es nulo, sustituye su valor de lo contrario sustituye ‘palabra’.
${parámetro:=palabra} Si ‘parámetro’ es nulo, sustituye ‘palabra’ de lo contrario, sustituye su valor. No
se aplica para parámetros posicionales.
${parámetro:?palabra} Si ‘parámetro’ no es nulo, sustituye su valor de lo con–trario, imprime ‘palabra’ y
sale del shell. 5
${parámetro:+palabra} Si ‘parámetro’ no es nulo, sustituye ‘palabra’ de lo contrario, no sustituye nada.
13. La entrada o salida de un comando pueden re–direccionarse usando una notación especial que el shell
interpreta:
UNIXWARE AVANZADO
JDCM UNIX SVR4 – NA/1 5
 palabra Utiliza el archivo ‘palabra’ como entrada estándar.
 palabra Utiliza el archivo ‘palabra’ como salida estándar.
 palabra Utiliza el archivo ‘palabra’ como salida estándard, agregándole información si existe o
creándolo si no.
 palabra Luego de realizarse la sustitución de parámetro o de comando en ‘palabra’, se lee la
entrada al shell hasta la primera línea que concuerda con la ‘palabra’ resultante, o un fin
de archivo.
dígito Usa el archivo asociado con el descriptor de archivo ‘dígito’ como entrada estándar.
dígito Usa el archivo asociado con el descriptor de archivo ‘dígito’ como salida estándar.
dígito1dígito2 El descriptor de archivo que se asocia con el archivo ‘dígito2’ es el especificado por el
archivo ‘dígito1’.
14. Existen algunas señales que el shell interpreta:
NUM DESCRIPCION SEÑAL OBSERVACIONES
0 SHELL EXIT
1 HANG UP SIGHUP
2 INTERRUPT SIGINT Tecla DEL
3 QUIT SIGQUIT Similar a SIGINT pero incluye un core_dump
9 SURE KILL SIGKILL No puede ser atrapado ni ignorado
15 TERMINATE SIGTERM Software Termination Signal
15. Existen algunos comandos internos al shell:
: El comando no hace nada, se retorna un código de salida cero.
. file Lee y ejecuta los comandos incluídos en ‘file’ y retorna.
break [n] Sale del lazo ‘for’ o ‘while’ si existe. En caso se especi–fique ‘ n ‘, sale ‘ n ‘ niveles.
continue [n] Reasume la iteración del lazo ‘for’ o ‘while’. Si se especifica ‘ n ‘, reasume el lazo ‘ n
‘–simo.
cd [arg] Cambia del directorio actual al especificado por ‘arg’.
echo [–n][arg] Muestra los argumentos ‘arg’ y sin newline si se especifica ‘ –n ‘.
eval [arg...] Los ‘argumentos’ son leídos como entrada al shell y se ejecutan los comandos resul–
tantes.
exec [arg] El comando especificado por los argumentos ‘arg’ se ejecuta en lugar de este shell sin
crear un nuevo proceso.
exit [n] Causa que el shell termine con el estado de salida dado por ‘ n ‘ y si se omite, el estado
de salida es aquel del último comando ejecutado.
export [nombre] os ‘nombres’ dados se marcan para que sean reconocidos automáticamente por otros
co–mandos subsecuentes es decir, se brindan al ambiente.
pwd Muestra el directorio de trabajo actual.
read [nombre..] Se lee una línea de la entrada estándard y, utilizando el separador de campo interno IFS
para delimitar las palabras, se asigna la primera palabra al primer ‘nombre’, la segunda
palabra al segundo ‘nombre’, etc. y las palabras que quedan se asignan al último
‘nombre’. El código de retorno es cero a menos que se encuentre un fin de archivo.
readonly [nombre] Los ‘nombres’ dados se marcan como de sólo lectura y los valores de estos
‘nombres’ no pueden ser cambiados por asignamientos subsecuentes.
return [n] Causa que termine una función con el valor de retorno especificado por ‘ n ‘ y si éste se
omite, el estado de retorno es aquel del último comando ejecutado.
set Indica al shell ciertas condiciones de trabajo las cuales son activadas con ‘ – ‘ y
desactivadas con ‘ + ‘. Son las mismas que las opciones exceptuando ‘ [–rc] ‘ y pueden
fijarse desde dentro del programa.
shift [n] Los parámetros posicionales mayores a 9 pueden ser accesa–dos mediante el
corrimiento de ‘ n ‘ posiciones.
trap [arg][n] Se lee y ejecuta el comando ‘arg’ cuando el shell recibe la(s) señal(es) ‘ n ‘. Si ‘arg’ es
nulo, la señal es ignorada por el shell y por los comandos que invoca. Si ‘ n ‘ es cero, el
comando ‘arg’ se ejecuta al salir del shell.
16. El shell evalúa las redirecciones de izquierda a derecha.
17. El comando ‘rsh’ (shell restringido) se usa para ambientes de ejecución con capacidades más
controladas que las del shell estándar. Lo siguiente no está permitido:
 Cambiar de directorio o el valor de $PATH.
 Especificar trayectorias o comandos conteniendo ‘ / ’.
 Redireccionar la salida ( ‘  ’ y ‘  ’ ).
18. Las palabras que se usan para nombres de archivos en la redirección de entrada/salida no deben emplear
metacaracteres ya que éstos pierden su significado.
19. Para escribir los scripts eficientemente tenga en cuenta lo siguiente:
 Optimize la trayectoria de búsqueda.
 Ajuste la entrada/salida cuanto sea posible (E/S en bloques grandes en lugar de pequeños).
UNIXWARE AVANZADO
JDCM UNIX SVR4 – NA/1 6
 Use comandos internos (‘test’ y ‘ : ’ son ejemplos de comandos internos, ‘expr’ y ‘true’ son
externos o de filesystem).
 Evite los procesos innecesarios (muchos procesos simultáneos demandan recursos).
 Minimize la lista de comandos en las construcciones anidadas (especialmente en lenguajes
interpretativos como el shell).
 Use funciones cuando sea apropiado.
 La facilidad de lectura y la claridad son importantes, agrege líneas de comentarios para este fin.
Ejemplos:
(1)
$ readonly var1
$ var1=/etc/bin
var1: is read only
(2)
$ readonly
readonly var1
(3)
$ readonly var1
$ sh
$ var1=/etc/bin
$ echo $var1
/etc/bin
(4)
$ var1=pwd
$ ${var1:–ls}
/usr/user01
$ var2=
$ ${var2:–ls}
ricky.c
lucia.c
(5)
$ var2=
$ ${var2:=pwd}
/usr/user01
$ echo $var2
pwd
(6)
$ b=user01
$ a=’$b’
$ echo $a
$ b
$ eval echo $a
user01
(7)
$ echo ‘${var2:?pwd}
 ls’ test3
$ chmod 777 test3
$ var2=date
$ export var2
$ test3
Tue Nov 17:14:..
co.c
xn.c
$ var2=
$ test3
test3: var2:pwd
(8)
$ var4=
$ ${var4:+pwd}
$ var4=xyz
$ ${var4:+pwd}
/usr/user03
(9)
$ cat test1
test2 “$*”
test2 “$@”
$ test1 uno ‘dos ’ tres
uno dos  tres
uno
dos 
tres
(10)
$ cat task5.cmd
trap ‘rm –f /usr/tmp/$$; trap 0; exit’ 0 1 2 15
pgm2
(11)
$ cat sig.cmd
trap ‘echo “Abort”; exit 3’ 1 2 15
while true
do
echo ‘Programa Corriendo’
done
(12)
$ whowhere ()
 {
 who
 pwd
 }
(13)
$ whowhere
user01 tty103 May 13 10:48
user03 tty100 May 13 11:42
/usr/check
(14)
$ x=’`cat filex`’
$ echo $x
`cat filex`
$ eval echo $x
línea 1 de filex
línea 2 de filex
línea 3 de filex
JDCM UNIX SVR4 – NA/1 7
(15)
$ cat test1
echo $1 $2 $3
echo $*
save=$*
shift
echo $1 $2 $3
set $save
echo $1 $2 $3
echo $*
exit
$ test1 uno dos tres cuatro
uno dos tres
uno dos tres cuatro
dos tres cuatro
uno dos tres
uno dos tres cuatro
(16)
$ cat test1
test2 $*
test2 $@
$ cat test2
echo $1
echo $2
echo $3
$ test1 uno ‘dos ’ tres
uno
dos

uno
dos

EL ‘KORN’ SHELL
01. Características
1. La mayoría de las del Bourne Shell y muchas de las mejores características del C Shell.
2. La mayoría de los scripts escritos para Bourne Shell pueden ser usados sin modificación en el Korn
Shell. Funciona igual que el Bourne Shell al leer el archivo .profile que contiene los valores de ambiente
predeterminados.
3. Lee además el archivo de ambiente creado por el usuario, si existe. Su ubicación está definida por la
variable ENV y puede estar incluída en el .profile del directorio base.
4. Incluye un Korn Shell restringido.
5. Presentamos algunas características únicas:
 Historia de comandos se mantiene un archivo de historia que contiene los comandos
ejecutados. Se puede accesar mediante editores y/o reejecutar
comandos previos.
 Alias de comandos las líneas de comando ingresadas se pueden adecuar a las
necesidades de los usuarios al definirles un nombre corto
denominado alias.
 Control de tareas el Korn Shell brinda facilidades para controlar tareas -secuencias
de comandos. Las tareas pueden detenerse o reasumirse y moverse
entre el background y foreground
 Opciones y variables son únicas para el Korn Shell y pueden utilizarse para modificar el
ambiente del usuario.
6. Modo de edición de líneas de comando:
 EDITOR = vi asigna el nombre del editor vi como el valor de la variable
indicada —sin espacios.
 VISUAL = vi asigna el nombre del editor vi como el valor de la variable -mayor
jerarquía que la variable EDITOR.
 set –o vi ejecuta el comando set utilizando la opción –o mode, en este
ejemplo es el editor vi —mayor jerarquía que las variables
EDITOR y VISUAL. - activa la opción y + la desactiva
 ESCAPE presione esta tecla para ingresar al modo comando de
edición.Presione k para navegar por la lista de comandos
hacia atrás, o j para ir hacia adelante. Seleccione un comando
mediante/patrón. Si desea el editor vi, simplemente presione v.
7. Historia de comandos:
 HISTFILE variable que contiene el nombre del archivo de comandos.
Por defecto es el archivo .sh_history y se localiza en el
directorio base.
JDCM UNIX SVR4 – NA/1 8
 HISTSIZE determina el máximo número de comandos (relativo al
comando actual) que se pueden referenciar para
modificación y/o reejecución. El valor por defecto es 128. Tan
pronto como el número de entradas exceda el valor de esta
variable, los comandos menos recientes son inaccesibles, aunque
permanecen en el archivo de historia.
 r [número–secuencia] reejecuta comando de más reciente ejecución, o el indicado
por el número de secuencia.
8. Comando alias:
 Muestra todos los alias.
 Define los alias y línea de comandos asociados.
 Lista el valor del comandoasociado con el alias.
9. Comando unalias:
 Remueve el alias nombrado de la lista de alias.
Ejemplos
$ alias
(lista los alias actuales)
$ alias limpio=´find . -atime +60 -exec rm {} ;´
$ alias limpio
find . -atime +60 -exec rm {} ;
$unalias limpio
02. Control de tareas
1. Estados:
 foreground el trabajo se procesa inmediatamente antes que el control sea
retornado al shell y se presente otro prompt.
 background un trabajo es ejecutado y el shell retorna inmediatamente el
control al usuario mientras el sistema continúa hasta completar la
tarea. Si una tarea en este estado trata de leer del terminal, se
detiene y se muestra un mensaje apropiado. Se previene esto
mediante el comando stty tostop, de modo que no se interfiere
con la salida de la tarea en foreground.
 stopped (suspended) una tarea activa que se detiene de manera temporal.
 terminated (killed) es una tarea que ha sido detenida y terminada.
2. Comandos:
 jobs -option lista el estado de todos los trabajos
-l: listado largo incluyendo PIDs
-p: lista sólo los PID asociados ejecución
 fg job_id coloca una tarea en el foreground
 ^z suspende una tarea en el foreground
 bg job_id coloca la tarea designada en el background
 stop job_id suspende en el background la tarea desiagnada
 kill -signal job_id termina la tarea designada
 + identifica la tarea actual
 - identifica la tarea anterior
 %job_id(s) designa el número de la tarea
 PID designa la identificación del proceso
 %patrón la tarea conteniendo el patrón en la línea de comando
Ejemplos
$ sleep 300 
[1[ 3105
$ jobs
[1] + running sleep 300 
$ bg %sleep
[1] sleep 300 
$ fg %1
sleep 300
CTRL z
[1] + stopped sleep 300
JDCM UNIX SVR4 – NA/1 9
03. Generalidades
1. Situaciones útiles (rpatrón es opcional):
 let “i=i+1” representa: i=`expr $y + 1`
se pueden utilizar varias expresiones en una sola línea.
 substring string patrón remueve la porción más pequeña del lado derecho del string que
concuerda con el patrón.
 substring -l lpatrón string rpatrón
se remueve del lado izquierdo la parte más pequeña del string
que concuerda con lpatrón, y del lado derecho la parte más
pequeña que concuerda con rpatrón.
 substring -L lpatrón string rpatrón
similar al anterior excepto que se remueve la parte del
string más larga.
 ${variable % patrón} equivale a `substring “$variable” patrón`
 ${variable %% patrón} la parte más larga de $variable que concuerda con el patrón es la
que se remueve.
 ${variable # patrón} equivale a `substring -l patrón “$variable”`
 ${variable ## patrón} equivale a `substring -L patrón “$variable”`
2. Posicionamiento:
 typeset -Ln variables las variables se ajustan hacia la izquierda y se hacen de n
caracteres de longitud, completando con espacios según convenga.
 typeset -Rn variables las variables se justifican hacia la derecha y se hacen de n
caracteres de longitud.
3. Arreglos: se pueden asignar valores a los elementos a medida que se necesiten, empezando en cero, y
conteniendo hasta 512 elementos:
 echo ${array[1]} muestra el valor del elemento #1 del arreglo.
 echo ${array[*]} muestra los valores de todos los elementos del arreglo.
 echo ${#array[*]} muestra el número de elementos del arreglo.
EL EDITOR ‘SED’
01. El editor batch de strings
1. Es editor no interactivo, usualmente utilizado para modificar archivos de gran tamaño y con diferentes
condiciones en su estructura.
2. Su sintaxis es la siguiente:
/bin/sed [–n][–e ‘script’][–f ‘sfile’] {files}
donde:
 n Suprime la salida por defecto.
 e ‘script’ Indica los comandos de edición (script 6
).
 f ‘sfile’ Indica que el script se tome de ‘sfile’.
4. Si existe una sola opción ‘ –e ’ y no hay opciones ‘ –f ’, se puede omitir el primer flag.
5. Posee algunas funciones básicas:
a Adiciona líneas a la salida.
c Cambia líneas.
d Borra líneas.
i Inserta líneas.
+p Imprime líneas.
q Quit.
r Lee un archivo.
s/texto1/texto2 Sustituye cadenas de caracteres.
w Escribe un archivo.
JDCM UNIX SVR4 – NA/1 10
02. Ejemplos
(1)
$ cat binput
114 James
447 Audrey
628 Harry
599 Ken
$ sed ‘4 s/Ken/Don/’ binput
114 James
447 Audrey
628 Harry
599 Don
(2)
$ sed –n ‘1,2p’ binput
114 James
447 Audrey
(3)
$ cat pfile
2s/447/448/
3s/628/629
$ sed –f pfile binput
114 James
448 Audrey
629 Harry
599 Ken
(4)
$ sed ‘s/^/tabtab/’ binput binput.out
$ cat binput.out
114 James
447 Audrey
628 Harry
599 Don
(5)
$ sed ‘s/^[1–9]/X/’ binput binput.out
$ cat binput.out
X14 James
X47 Audrey
X28 Harry
X99 Don
(6)
$ sed ‘1,/^$/d’ testfile outfile
(7)
$ who
bratton tty105 jan 7 09:09
walsh tty104 jan 7 09:14
blades tty100 jan 7 09:09
$ who | sed ‘s/ .* //’7
bratton 09:09
walsh 09:14
blades 09:09
 sed -n ´1,2p´ intro imprime sólo las dos primeras líneas del archivo “intro”.
La opción ‘-n’ le dice al comando sed que no imprima ninguna
línea a menos que explícitamente se le diga que lo haga.
 sed -n ´/UNIX/p´ imprime sólo las líneas que contienen el string UNIX .
 sed ´1,10s/unix/UNIX/g´ intro
cambia unix por UNIX dondequiera aparezca en las primeras 10
líneas del archivo intro .
 sed ´/jan/s/-1/-5´ cambia el primer -1 por -5 en todas las líneas que contienen jan .
AWK, LENGUAJE DE PROGRAMACION
01. El comando
Propósito:
1. Los usuarios de computadoras emplean grandes cantidades de tiempo efectuando manipulaciones
de datos simples y mecánicas, como cambiar el formato de la información, chequear su validez,
encontrar items con alguna propiedad, adicionar números, imprimir reportes, y otras cosas
similares. Todo lo anterior debe mecanizarse pero, no tiene sentido el escribir un programa
especial en un lenguaje estándard como Pascal, COBOL, o C cada vez que se requiera una tarea
como las anteriores.
2. El comando ‘ awk ’ es un lenguaje de programación expresivo y conveniente que hace posible el
manejar dichas tareas con programas muy cortos, a menudo de dos o tres líneas de longitud 8
pero,
dada su actual combinación de facilidades (fué mejorado en 1985), los programadores han escrito
incluso programas significativamente largos.
3. Un programa awk es una secuencia de patrones y acciones que dicen qué buscar en la información
de entrada y qué hacer cuando se encuentra. Un patrón puede seleccionar líneas mediante
combinaciones de expresiones regulares y operaciones de comparación sobre cadenas de
JDCM UNIX SVR4 – NA/1 11
caracteres, números, campos, variables, y arreglos de elementos. Las acciones pueden realizar
procesamiento arbitrario sobre líneas seleccionadas.
Sintaxis:
/usr/bin/awk [–F ‘re’] parámetros.. ‘prog’[–f ‘progfile’] file
Opciones:
 F’re’ Define que el separador de campo de la entrada sea la expresión regular ‘re’.
 parámetros Son variables internas a las que se asigna un valor antes de ser pasadas al comando.
 f’progfile’ Es el archivo donde se encuentra el patrón ‘prog’ (si existe).
Consideraciones:
1. El string ‘prog’ debe encerrarse entre apóstrofes ‘ ‘ para protegerlo del shell. Cada línea de entrada
se verifica contra la porción patrón de cada sentencia patrón_acción y se ejecuta la acción
asociada para cada patrón verificado. Una sentencia patrón_acción tiene la forma:
patrón { acción }
2. Si no hay acción con un patrón, la línea que concuerda se imprime. Si no hay patrón con una
acción, la acción se realiza en cada línea de entrada.
02. Estructura
1. Un programa ‘awk’ posee la siguiente estructura:
 Una sección BEGIN
 Una sección principal (registro)
 Una sección END
2. La sección BEGIN se ejecuta antes que cualquiera de las líneas de entrada se lean, y la sección END se
ejecuta luego que todos los archivos de datos se procesan. La sección registro se ejecuta una y otra vez
por cada línea de entrada individual.
3. Los comandos terminan en ‘ ; ’, newline, ‘ } ’ y pueden consistir de:
 if (condicional) sentencia [else sentencia]
 while (condicional) sentencia
 do sentencia while (condicional)
 print [lista de expresiones]
 print formato, [lista de expresiones]
 for (expresión;condicional;expresión) sentencia
 for (var in array) sentencia
 delete array [subscript]
 break
 continue
 { [ sentencia ] .... }
 expresión 9
 next 10
 exit [expr] 11
 return [expr]
4. El ‘formato’ es un string que contiene tanto la información a imprimirse como las especificaciones de
qué conversiones deben realizarse en las expresiones en la lista de argumentos. Cada especificación
empieza con un ‘ % ‘ y termina con una letra que determina la conversión. Puede incluir:
 – Expresión justificada a la izquierda.
 ancho Ajusta el campo a este ancho según se requiera (los campos que empiezan
con un cero delante se ajustan con ceros).
 . precisión Ancho máximo del string o los dígitos a la derecha del punto decimal.
CONVERSION IMPRIME LA EXPRESION COMO
c un solo caracter
d número decimal
e [–]d.ddddddE[+–]dd
f [–]ddd.dddddd
g conversión ‘e’ o ‘f’, la menor, con los ceros no significativos suprimidos
o número octal no signado
s string
x número hexadecimal no signado
% imprime un ‘%’ sin convertir argumento
5. Los patrones son combinaciones Booleanas arbitrarias ( (, ), !, ||,  ) de expresiones
relacionales y expresiones regulares.
6. Estas expresiones se agrupan de la siguiente manera:
EXPRESIONES OPERADORES SIGNIFICADO
relacionales  menor que
= menor o igual a
== igual a
JDCM UNIX SVR4 – NA/1 12
!= diferente de
= mayor o igual a
 mayor que
regulares ~ concuerda
!~ no concuerda
7. En una comparación, si ambos operandos son numéricos, se efectúa una comparación numérica de lo
contrario, se comparan como cadenas de caracteres.
8. Para forzar una expresión entre un tipo y otro se efectúa lo siguiente:
número “” Se concatena un string nulo a un número para forzarlo a ser un string.
string + 0 Se adiciona un cero al string para forzarlo a ser numérico.
9. Las expresiones regulares son las utilizadas en ‘egrep’ y dentro de los patrones deben estar circundados
por ‘ / ’.
10. Un patrón puede consistir de dos patrones separados por una coma lo cual significa que la acción se
realiza entre las líneas donde aparezca el primer patrón y la siguiente ocurrencia del segundo patrón. Se
pueden utilizar paréntesis para agrupamiento y ‘ | ’ para las alternativas posibles.
11. Las variables pueden ser escalares, elementos de arreglos o campos, se inicializan con el string ‘null’ o
con ‘cero’.
12. Las variables internas son:
VARIABLE SIGNIFICADO VALOR POR DEFECTO
ARGC Número de argumentos de la línea de comandos –
ARGV Arreglo de argumentos de la línea de comandos –
FILENAME Nombre del archivo de entrada actual –
FNR Número de registro en el archivo actual –
FS Separador de campo de entrada blanco y tabulación
NF Número de campos en el registro actual –
NR Número de registros leídos hasta el momento (# ordinal del
registro actual)
–
OFMT Formato de salida para números %.6g
OFS Separador de campo de salida blanco
ORS Separador de registro de salida newline
RS Separador de registro de entrada newline
RSTART Indice del primer caracter verificado por match() –
RLENGTH Longitud del string verificado por match() –
13. El comando ‘awk’ posee varias funciones internas a saber: aritméticas 12
, string, de entrada/salida.
14. Funciones aritméticas internas:
FUNCION VALOR RETORNADO
atan2(y,x) arco tangente de y/x en el rango [–|| , ||]
cos(x) coseno de x, con x en radianes
exp(x) función exponencial de x
int(x) parte entera de x truncada hacia cero
log(x) logaritmo natural de x
rand(x) número aleatorio entre 0 y 1
sin(x) seno de x, con x en radianes
sqrt(x) raíz cuadrada de x
srand(x) x es la nueva base para rand() 13
19. Funciones string internas:
FUNCION DESCRIPCION
gsub(r,s,t) Sustituye ‘ s ‘ por ‘ r ‘ globalmente en el string ‘ t ‘, retorna el número de
sustituciones. Si se omite ‘ t ‘, se usa el registro actual.
index(s,t) Retorna la posición del string ‘ t ‘ en ‘ s ‘ o cero si no ocurre.
length(s) Retorna la longitud de ‘ s ‘ o de la línea completa si no hay argumento.
match(s,re) Retorna la posición en ‘ s ‘ donde ocurre ‘ re ‘ 14 o cero si no ocurre. RSTART se
fija a la posición de inicio (la misma que el valor retornado) y RLENGTH se fija a la
longitud del string verificado.
split(s,a,re) Parte ‘ s ‘ en un arreglo ‘ a ‘ según ‘ re ‘ 15, retorna el número de campos.
sprintf(fmt,expr–list) Retorna la ‘expr–list’ formateada de acuerdo al string de formateo ‘fmt’, sin
imprimirla.
sub(r,s,t) Sustituye ‘ s ‘ por el primer ‘ r ‘ en el string ‘ t ‘, retorna el número de sustituciones.
Si se omite ‘ t ‘, se usa el registro actual.
substr(s,p,n) Retorna el substring de ‘ s ‘ de longitud ‘ n ‘ empezando en la posición ‘ p ‘. Si se
omite ‘ n ‘, retorna el sufijo de ‘ s ‘ empezando en la posición ‘ p ‘.
20. Funciones de entrada/salida:
FUNCION DESCRIPCION FIJA
close(filename) Cierra el archivo denominado ‘filename’. –
cmd | getline 16
Entuba la salida de ‘cmd’ a ‘getline’, cada llamada sucesiva a
‘getline’ retorna la siguiente línea de salida de ‘cmd’.
$0,NF
JDCM UNIX SVR4 – NA/1 13
getline Fija $0 al siguiente registro de entrada del archivo de entrada actual. $0,NF,NR,FNR
getline var Fija la variable ‘var’. var,NR,FNR
getline  file Fija $0 al siguiente registro de ‘file’. $0,NF
getline varfile Fija ‘var’ a partir del siguiente registro en ‘file’. var
cmd | getline var Fija ‘var’ a partir de la línea de salida de ‘cmd’. var
system(cmd) Ejecuta ‘cmd’ y retorna su estado de salida. –
03. Ejemplos
(01)
{ print $2,$1 }
Imprime los dos primeros campos en orden inverso.
(02)
BEGIN { FS=”,[t]* | [t]+” }
{ print $2,$1 }
Similar a lo anterior, pero con los campos de entrada
separados por coma y/o blancos y tabulaciones.
(03)
{ s+=$1 }
END { print “suma es “,s,” promedio es “,s/NR }
Suma la primera columna, imprime la suma y el promedio.
(04)
{ for (i=NF;i0;––i) print $i }
Imprime los campos en orden inverso.
(05)
/start/,/stop/
Imprime todas las líneas que se encuentran entre los
pares start/stop.
(06)
$1 != prev { print; prev=$1 }
Imprime todas las líneas cuyo primer campo sea diferente
del anterior.
(07)
{ print $NF }
Imprime el último campo de cada línea de entrada.
(08)
NR=10
Imprime la línea de entrada número 10.
(09)
{ line=$0 }
END { print line }
Imprime la última línea de entrada.
(10)
NF != 4 { print $0, “no tiene 4 campos”}
Imprime las líneas de entrada que no tienen 4 campos.
(11)
{ nc=nc + length($0) }
END {print nc + NR }
Imprime el número total de caracteres de entrada
(adicionanado NR incluímos el número total de newlines).
Asumimos el siguiente archivo de muestra:
NOMBRE AREA POBLACION CONTINENTE
USSR 8650 262 Asia
Canada 3852 24 North America
China 3692 866 Asia
USA 3615 219 North America
Brazil 3286 116 South America
Australia 2968 14 Oceania
India 1269 637 Asia
Argentina 1072 26 South America
Sudan 968 19 Africa
Argelia 920 18 Africa
(12)
{ print $1 $2 }
Muestre los nombres de países y su
continente de origen
(13)
maxpop  $3 { maxpop = $3; country = $1 }
END { print country, maxpop }
Encuentra el país con la población mayor.
(14)
{ for ( i = 1; i  NF; i++ ) print $i }
Imprime todos los campos de entrada uno por
línea.
(15)
/start/ {
do {
getline x
} while ( x !~ /stop/)
}
{ print }
Imprime todas aquellas líneas que no están
comprendidas entre ‘start’ y ‘stop’.
(16)
/Asia/ { pop[”Asia”] += $3 }
/Africa/ { pop[”Africa”] += $3 }
END { print “Población asiática en millones: “, pop[”Asia”]
{ print “Población africana en millones es: “,
pop[”Africa”] }
Acumula la población total de Asia y Africa en
el arreglo asociativo ‘pop’.
JDCM UNIX SVR4 – NA/1 14
(17)
$3  100
Selecciona líneas donde el tercer campo es
mayor a 100.
(18)
$1 = “S”
Selecciona líneas que empiezen con las letras
comprendidas en el rango [S–Z]..
(19)
$4 !~ /Asia/ { print $1 }
Imprime el primer campo de todas las líneas
cuyo cuarto campo no sea igual a “Asia”.
(20)
$4 == “Asia”  $3  500
Selecciona todas las líneas en las que el
cuarto campo es “Asia” y el tercer campo es
mayor a 500.
(21)
$4 == “Asia” || $4 == “Africa”
Selecciona todas las líneas con “Asia” o
“Africa” en el cuarto campo.
(22)
$4 ~ /^(Asia|Africa)$/
Similar al anterior.
(23)
FNR == 1, FNR == 5 { print FILENAME, $0 }
Imprime los cinco primeros registros de cada
archivo de entrada con el nombre de archivo
delante.
(24)
{ printf “%10s %6.1fn”, $1, 1000 * $3/$2 }
Imprime el nombre de cada país y su
densidad de población (según el archivo
“países”).
(25)
$4 == “Asia” { pop += $3; ++n }
Calcula el número de países asiáticos y su
población total.
(26)
{ gsub(/USA/,”Unisted States”); print }
Reemplaza las ocurrencias de “USA” por
“United States”.
(27)
BEGIN { FS = OFS = “t” }
{ $5 = 1000 * $3/$2; print }
Crea un quinto campo con la densidad
poblacional.
(28)
{ print length($0),$0 }/
Imprime cada registro, precedido por su
longitud.
(29)
length($1)  max { max = length($1); name = $1 }
END { print name }
Imprime el nombre de país más largo.
(30)
{ $1 = substr($1,1,3); print }
Abrevia los nombres de país en el archivo
“países” a sus tres primeras letras.
Ejemplos de sentencias ‘printf’ con su salida correspondiente:
printf “%d”,99/2 49
printf “%e”,99/2 4.950000e+01
printf “%f”,99/2 49.500000
printf “%6.2f”,99/2 49.50
printf “%g”,99/2 49.5
printf “%o”,99 143
printf “%060”,99 000143
printf “%x”,99 63
printf “|%s|”,”Enero” |Enero|
printf “|%10s|”,”Enero” | Enero|
printf “|%–10s|”,”Enero” |Enero |
printf “|%.3s|”,”Enero” |Ene|
printf “|%10.3s|”,”Enero” | Ene|
printf “|%–10.3s|”,”Enero” |Ene |
printf “%%” %
Otros ejemplos:
(31)
$2 !~ /^[0–9]+$/
Imprime todos los registros en los que el segundo campo no es un
string de uno o más dígitos.
(32)
/(apple|cherry) (pie|tart)/
Encuentra las líneas que contienen uno de los cuatro substring
siguientes:
apple pie
apple tart
cherry pie
cherry tart
(33)
index(“banana”, “an”)
Retorna el dígito ‘2’.
(34)
{ if (match($0,/i.?a/))
print RSTART,RLENGTH,$0 }
Encuentra la primera ocurrencia de la letra ‘ i ‘, seguida de a lo
más un caracter, seguida de una letra ‘ a ‘ en un registro.
(35)
x = sprintf (“%10s %6d”,$1,$2)
Asigna a ‘ x ‘ el string producido al formatear los valores de $1 y $2
como un string de 10 caracteres y un número decimal en un campo
de 6 de ancho de modo que ‘ x ‘ se pueda utilizar en cálculos
subsecuentes.
JDCM UNIX SVR4 – NA/1 15
(36)
{ s = s substr($1,1,3) “ “ }
END { print s }
Concatenación de strings (escribe uno tras otro en una expresión).
(37)
function fact(n) {
if (n = 1)
return 1
else
return n * fact(n–1)
}
{ print $1 “! es “ fact($1) }
Define y prueba la función factorial recursiva usual.
(38)
$1 == “#include” { gsub(/[”]/,””,$2)
system(“cat”,$2) }
Llama al comando ‘cat’ para imprimir el archivo nombrado en el
segundo campo de cada registro de entrada cuyo primer campo es
‘#include’, luego de eliminar cualquier , , “ que pudieran estar
presentes.
(39)
$3  100 { print $1, $3  “bigpop” }
$3 = 100 { print $1, $3  “smallpop” }
Imprime todas las líneas donde la población (tercer campo) es
mayor a 100 en un archivo “bigpop” y otras líneas en
“smallpop”. 17
COMANDOS ADICIONALES
01. Comando ‘basename’
Propósito:
Muestra la porción final del nombre de un archivo.
Sintaxis:
/bin/basename {pathname}
Consideraciones:
1. Borra cualquier prefijo que termina en ‘ / ’ del pathname y muestra el resultado en la salida
estándar. Normalmente es utilizado en procedimientos shell dentro de las marcas de sustitución.
Ejemplo:
$ nombre=`basename /usr/tmp/file1`
$ echo $nombre
file1
02. Comando ‘dirname’
Propósito:
Muestra la porción inicial del nombre completo de un archivo.
Sintaxis:
/bin/dirname {pathname}
Consideraciones:
1. Muestra todo excepto el último nivel de ‘pathname’ en la salida estándar.
2. Normalmente es utilizado en procedimientos shell dentro de las marcas de sustitución.
Ejemplo:
$ nombre=`dirname /usr/tmp/file1`
$ echo $nombre
/usr/tmp
03. Comando ‘echo’
Propósito:
Mostrar argumentos.
JDCM UNIX SVR4 – NA/1 16
Directorio de residencia:
Interno al shell.
Sintaxis:
echo [–n] {argumentos}
Opciones:
 n Imprime una línea sin ‘newline’.
Consideraciones:
1. Escribe sus argumentos separados por espacios en blanco y terminados por newline en la salida
estándard.
2. Es útil para producir diagnósticos en archivos de comando y para enviar datos.
3. Entiende las siguientes convenciones de ESCAPE:
b Backspace.
c Imprime la línea sin newline.
f Form–feed.
n Newline.
r Carriage return (CR).
t Tab.
v Vertical tab.
 Backslash.
0n Donde ‘n’ es el caracter de 8 bits que es representado en forma octal.
Ejemplo:
$ echo “CUIDADO:007”
04. Comando ‘expr’
Propósito:
Evaluar argumentos como una expresión.
Directorio de residencia:
Interno al shell.
Sintaxis:
expr {argumentos}
Consideraciones:
1. Los argumentos se toman como una expresión.
2. Luego de la evaluación, el resultado se escribe a la salida estándard.
3. Los términos de la expresión deben separarse por blancos.
4. Los caracteres especiales al shell deben estar precedidos por ‘  ’.
5. Un valor cero se representa por ‘ 0 ’.
6. Los argumentos de valor entero pueden estar precedidos por signo.
7. Los caracteres que lo requieran están prece–didos por ‘  ’.
8. Los operadores de igual nivel están agrupa–dos por ‘ { } ’.
9. Se detallan los siguientes operadores:
expr1 | expr2 Retorna ‘expr1’ si este no es nulo o cero de lo contrario,
retorna ‘expr2’.
expr1  expr2 Retorna ‘expr1’ si ni ‘expr1’ ni ‘expr2’ son nulo o cero, de
lo contrario retorna cero.
expr1 { =,,=,,=,!= } expr2 Retorna el resultado de una comparación entera si ambos
argumentos son enteros de otro modo, retorna el resultado
de una comparación lexicográfica.
expr1 { +,– } expr2 Adición o substracción de argumentos de valor entero.
expr1 { *,/,% } expr2 Multiplicación, división, o resto de argumentos de valor
entero.
expr1 : expr2 18
Retorna el número de caracteres encontrados (o cero si
falla). 19
10. Como efecto lateral de la evaluación de expresiones, ‘expr’ retorna los siguientes valores de salida:
0 Si la expresión no es nula ni cero.
1 Si la expresión es nula o cero.
2 Para expresiones inválidas.
JDCM UNIX SVR4 – NA/1 17
Ejemplo:
$ a=`expr $a + 1`
$ b=`expr $VAR : ‘.*’`
$ a=alfaromeo
$ b=`expr $a : ‘alfa(.*)’`
$ cat depath
expr $1 : ‘.*/(.*)’ | $1 20
$ depath /usr/bin/ana/file4
file4
05. Comando ‘getopts’
Propósito:
Individualiza las opciones de comando.
Directorio de residencia:
Interno al shell.
Sintaxis:
getopts string de opciones’ nombre {argumentos}
Consideraciones:
1. Lo utilizan los procedimientos shell para individualizar los parámetros posicionales a fin de
chequear opciones válidas.
2. El ‘string de opciones’ debe contener las letras de opciones que se deben reconocer.
3. Si una letra está seguida por “ : ”, se espera que la opción tenga uno o más argumentos los que
deben estar separados por espacios en blanco.
4. Cada vez que se invoca, el comando pone la siguiente opción en la variable ‘nombre’ y el índice
del siguiente argumento a procesarse en la variable shell OPTIND. Cada vez que se invoca el shell
o se invoca un procedimiento shell, la variable OPTIND se inicializa a 1.
5. Cuando una opción requiere un argumento_opción, el comando lo coloca en la variable shell
OPTARG. Si se encuentra una opción inválida, se coloca ‘ ? ’ en ‘nombre’.
6. Cuando se encuentra el final de las opciones, el comando termina con un estado de salida diferente
de cero. Muestra un mensaje de error en el error estándar cuando encuentra una opción no incluída
en el string de opciones.
Ejemplo:
El siguiente fragmento de programa puede tomar las opciones ‘a’, ‘b’ y ‘o’ la cual requiere un argumento_opción.
while getopts abo: c
do
case $c in
a|b) FLAG=$c ;;
o) OARG=$OPTARG ;;
?) echo $USAGE
exit 2 ;;
esac
done
shift `expr $OPTIND – 1`
el cual acepta lo siguiente:
$ cmd –a –b –o “xxx z yy” file
$ cmd –ab –o xxx,z,yy file
$ cmd –ab –o “xxx z yy” file
$ cmd –o “xxx z yy” –b –a file
06. Comando ‘compress’
Propósito:
Comprime archivos.
Sintaxis:
/usr/bin/compress nombre
Consideraciones:
1. Intenta almacenar los archivos especificados en forma comprimida. Cuando sea posible, el archivo
‘nombre’ es reemplazado por un archivo empaquetado: ‘nombre.z’. Utiliza el código de
Huffman (redundancia mínima) en base a su aplicación byte por byte.
JDCM UNIX SVR4 – NA/1 18
2. La cantidad de compresión obtenida depende del tamaño del archivo de entrada y de la
distribución de frecuencia de los caracteres. Retorna un valor que es igual al número de archivos
que no se pudieron comprimir.
3. El empaquetado no ocurre en los siguientes casos:
 El archivo parece ya empaquetado.
 El nombre de archivo tiene más de 12 caracteres.
 El archivo tiene links, no puede ser abierto, ya existe, o es un directorio, o el archivo con
extensión ‘ z ’ no puede crearse.
 No se ahorran bloques de almacenamiento en disco al empaquetar.
 Durante el proceso ocurre un error de I/O.
Ejemplo:
$ ls /  /tmp/p1
$ pack –f /tmp/p1
pack: /tmp/p1: 16.6% Compression
07. Comando ‘script’
Propósito:
Realiza un log de la sesión.
Sintaxis:
/usr/local/bin/script [–aq] file
Opciones:
 a Si el archivo ‘file’ existe, le adiciona información.
 q Los mensajes de apertura y cierre son suprimidos, al igual que las marcas de tiempo de
inicio y final en la creación del archivo ‘file’.
Consideraciones:
1. Genera un log de la interacción del usuario con el sistema. Fuerza un shell con la entrada y salida
estándar redireccionadas. Para terminar se presiona CTRL–D.
2. No hay forma de enviar un fin de archivo al shell sin terminar el comando ‘script’. Se recomienda
no iniciar subshells desde una sesión ‘script’ ya que pueden tener problemas o simplemente no
trabajan.
3. Se recomienda no trabajar con programas que usen la entrada estándard para examinar y controlar
el terminal del usuario como ‘ps’, ‘stty’, ‘tset’, ‘tty’, ‘ex’, y ‘vi’ ya que pueden tener problemas o
simplemente no trabajan.
Ejemplo:
$ script –q /tmp/file_user01
08. Comando ‘sum’
Propósito:
Muestra el checksum y la cuenta de bloques de un archivo.
Sintaxis:
/bin/sum file
Consideraciones:
1. Calcula y muestra un checksum de 16 bit para el archivo nombrado e imprime el número de
bloques en el archivo.
Ejemplo:
$ sum file1
$ sum /bin/ed
40198 111 /bin/ed
JDCM UNIX SVR4 – NA/1 19
09. Comando ‘tee’
Propósito:
Transcribe la entrada estándard a la salida estándard.
Sintaxis:
/usr/bin/tee [–ia] file
Opciones:
 i Ignora interrupciones.
 a Causa que la salida se adicione al archivo ‘file’ en lugar de reemplazarlo.
Consideraciones:
1. Adicionalmente, crea copias en el archivo ‘file’.
Ejemplo:
$ ls | tee /dev/tty102
$ who | tee file1 | wc
10. Comando ‘timex’
Propósito:
Mide el tiempo de un comando, reporta la actividad del sistema y la información procesada.
Sintaxis:
/usr/bin/timex comando
Consideraciones:
1. El ‘comando’ dado se ejecuta y se reporta en segundos el tiempo empleado, tiempo de usuario y
tiempo de sistema gastados durante la ejecución. Su salida se escribe en la salida estándard.
Ejemplo:
$ timex ls –lR
––– –– –––– –– – –– – – – –– –– – – –– –– –
––– –– –––– –– – –– – – – –– –– – – –– –– –
.
.
.
––– –– –––– –– – –– – – – –– –– – – –– –– –
––– –– –––– –– – –– – – – –– –– – – –– –– –
––– –– –––– –– – –– – – – –– –– – – –– –– –
real 0.94
user 0.04
sys 0.16
11. Comando ‘tput’
Propósito:
Inicializa un terminal o consulta la base de datos de información del terminal terminfo.
Sintaxis:
/usr/bin/tput [init/reset][capname][params]
Opciones:
init Se obtienen los strings de inicialización del terminal (is1, is2, is3, if, iprog).
reset Se obtienen los strings de reset del terminal (rs1, rs2, rs3, rf).
capname Indica el atributo de la base de datos terminfo.
params Si el atributo es un string que toma parámetros, éstos se insertan en el string.
Consideraciones:
1. Este comando utiliza la base de datos terminfo para que los valores de las capacidades
dependientes del terminal estén disponibles al shell.
JDCM UNIX SVR4 – NA/1 20
2. Se recomienda testear el código de salida para asegurarse que es cero antes de utilizar el valor
retornado.
Ejemplo:
$ tput init Inicializa el terminal de acuerdo al tipo de terminal en la variable ambiental TERM.
$ tput cup00 Envía la secuencia para mover el cursor a la fila 0, columna 0.
$ tput clear Envía la secuencia de clear_screen al terminal.
$ tput smso Envía la secuencia correspondiente a bold al terminal y causa que el mismo trabaje
en este nuevo estado.
12. Comando ‘tr’
Propósito:
Traduce caracteres.
Sintaxis:
/usr/bin/tr [–ds] string1 string2
Opciones:
 d Borra todos los caracteres de entrada en el ‘string1’.
 s Resume todos los strings de caracteres de salida repetidos que están en ‘string2’ a caracteres
simples, según el caracter dado en ‘string1’.
Consideraciones:
1. Copia la entrada estándard a la salida estándard con sustitución o borrado de los caracteres
seleccionados.
2. Los caracteres de entrada encontrados en ‘string1’ se mapean en sus correspondientes de
‘string2’.
3. Las siguientes convenciones de abreviación se pueden utilizar para introducir rangos de caracteres
o caracteres repetidos dentro de los string:
 [a – z] Rango de caracteres entre ‘ a ’ y ‘ z ’, inclusive.
 [a * n] Indica ‘ n ’ repeticiones del caracter ‘ a ’.
4. Se pueden utilizar representaciones en octal (001 – 377).
5. Los caracteres especificados se buscan y traducen en unidades de caracter, no bytes.
6. Algunos caracters importantes y su representación octal:
bell 7
bksp 10
tab 11
newline 12
formfeed 14
CR 15
Ejemplo:
$ ls –C  /tmp/p
$ tr –s “ “ “X”  /tmp/p
$ tr ´[a-z]´ ´[A-Z]´ intro letras minúsculas a mayúsculas
$ tr -s ´:´ ´11´ : en tabulaciones, reemplazando múltiples tabulaciones por una sola
$ tr -s ´ ´ ´ ´ archivo compacta muchos espacios utilizando la opción -s y especificando un solo espacio
como primer y segundo argumento
JDCM UNIX SVR4 – NA/1 21
CONFIGURACIONES
MANEJO DE USUARIOS Y GRUPOS – REPASO
01. Archivo ‘/etc/group’
vm : : 100 : suzie, woody, tom, bill, lynda
1 2 3 4
Donde:
1. Nombre del grupo.
2. Password del grupo (no utilizado).
3. Número de identificación del grupo (GID).
4. Lista de los miembros del grupo.
02. Comando ‘newgrp’
1. Cambia temporalmente la identificación del grupo primario. Coloca nombre de grupo diferente a los
archivos recientemente creados.
2. Cuando se le utiliza con un guión ( – ), el ambiente cambia como si el usuario hubiera ingresado
nuevamente i.e., nuevo login pero en el nuevo grupo.
3. Nuevas ejecuciones del shell siempre reemplazan el shell actual. Sólo se retienen las variables
exportadas y las que no han sido exportadas se resetean.
4. Ubicamos el grupo con el que estamos trabajando con el comando ‘id’.
03. Archivo ‘/etc/passwd’
1. Controla el acceso al sistema operativo UNIX. Sólo debe ser trabajado por el administrador del sistema.
2. Los password no son mostrados en pantalla. Su longitud debe ser por lo menos tres caracteres aunque
sólo son significativos los 8 primeros. Por defecto, esta longitud es de 6 caracteres.
3. Deben contener por lo menos dos caracteres alfabéticos y por lo menos uno numérico o caracter
especial. Los password deben diferir del login del usuario, incluyendo formatos reversos o circulares.
4. El password nuevo debe diferir del antiguo en por lo menos 3 caracteres.
user1 : x : 130 : 100 : User 1 Id : /home/user1 : /sbin/sh
1 2 3 4 5 6 7
Donde:
1. Nombre del login (usuario).
2. Bandera de password (contenidoa en el archivo ‘/etc/shadow’).
3. Número de identificación del usuario (Entre 0 y 99 están reservados para la administración del
sistema).
4. Número de identificación de grupo (según el archivo ‘/etc/group’).
JDCM UNIX SVR4 – NA/1 22
5. Campo de comentario.
6. Directorio base.
7. Shell o archivo ejecutable:
Shell Pathname
Bourne o ATT /sbin/sh
restringido (Bourne) /sbin/rsh
”C”–shell o Berkeley /bin/csh
Korn shell /usr/bin/ksh
restringido (Korn) /usr/bin/rksh
04. Archivo ‘/etc/default/passwd’
1. Contiene información sobre la vigencia de los password:
PASSLENGTH Longitud mínima para el password del usuario.
MINWEEKS Mínimo número de semanas antes que el usuario esté permitido de cambiar de password.
MAXWEEKS Máximo número de semanas antes que un usuario pueda cambiar su password. 21
ALGORITHM STANDARD: Algoritmo estándar.
PROACTIVE: Versión más elaborada.
GENERATED: El usuario debe escoger un password generado por la máquina.
WARNWEEKS Número de semanas antes que un password de un usuario específico expire y se envíe un
mensaje de advertencia en el siguiente intento de acceso.
05. Archivo ‘/etc/shadow’
1. Archivo de claves del sistema.
user1 : cPsWY.RtfiyJA : 7964 : 0 : 168 : 7 : 120 : 10/1/92 :
1 2 3 4 5 6 7 8 9
Donde:
1. Nombre del login (igual al ingresado en el archivo ‘/etc/passwd’).
2. Password encriptado.
3. Ultimo cambio: número de días esde Enero 1, 1970 hasta la última vez en que el password ha cambiado.
Es generado por el sistema.
4. Mínimo: mínimo número de días antes que un usuario pueda cambiar su password.
5. Máximo: número máaximo de días antes que se requiera un cambio en el password.
6. Advertencia: Número de días en que se advierte al usuario antes que expire el password.
7. Inactivo: número de días de inactividad permitida.
8. Expiración: fecha absoluta pasada la cual el login no funciona.
9. Flag: reservado para uso futuro.
ARCHIVOS Y DIRECTORIOS
01. Archivo ‘/etc/inittab’
Propósito:
Es una tabla de inicialización que determina lo que hay que realizar en un nivel dado.
Características:
1. La tabla de inicialización contenida en este archivo instruye al utilitario “/etc/init” del Sistema
Operativo UNIX a que realice algunas operaciones durante los niveles de ejecución especificados
(llamados también “estados de ejecución”, “niveles de inicio”, “modos”).
JDCM UNIX SVR4 – NA/1 23
2. Una entrada en este archivo tiene el formato siguiente:
Label de entrada:Nivel de ejecución:acción:cmds y argumentos
Donde:
Etiqueta de entrada (label), identifica una entrada única en el archivo inittab.
Nivel de ejecución Identifica el nivel de inicialización en que se operará el proceso en
particular:
0 Modo mono–usuario, usado para mantenimiento del sistema y
funciones administrativas.
s/S Modo mono–usuario, no desmonta los filesystem pero se requiere
recargar el sistema.
1 Modo mono–usuario, no desmonta los filesystem y puede retornar al
modo multi–usuario sin recargar el sistema.
2 Modo multi–usuario normal, donde están disponibles la mayoría de
recursos.
3 Es similar al modo 2 pero con características adicionales para
implementar una red RFS.
4 Nivel de ejecución definido por el usuario y utilizado para adecuar la
operación del sistema a necesidades particulares.
5 Detiene el sistema.
6 Lleva el sistema a un estado en el cual automáticamente vuelve a
cargar el sistema.
Acción Determina la manera de cómo se ejecutará el proceso el utilitario “init”.
sysinit Especifica que el programa indicado debe ejecutarse antes de
tratar de accesar a la consola. Debe ejecutar y esperar a que
concluya antes de pasar a la siguiente línea.
bootwait Inicia el proceso durante la inicialización inmediatamente
después que el sistema ha cargado. El comando ‘init’ inicia
el proceso nombrado en el campo de comando y espera que
termine. No reinicia el proceso.
initdefault Especifica el nivel inicial de ejecución. No se utiliza el
campo de proceso para esta acción sin embargo,
necesariamente deben estar presentes los dos puntos que
separan los campos de proceso y acción.
powerfail Ejecuta el proceso cuando el sistema pierde energía. Si se
conecta un UPS al sistema, se notifica a los usuarios que el
UPS ha entrado a funcionar.
wait Cuando se cambian los niveles de ejecución, el comando
‘init’ inicia el proceso y espera a que termine.
once Ejecuta el comando sólo una vez.
respawn Ejecuta el comando y lo reinicia cada vez que termina.
off No se ejecuta el comando.
Comando Proceso ejecutable que el utilitario init ejecuta.
Ejemplo:
# pg /etc/inittab
sc::sysinit:/sbin/setcons
cc::sysinit:/sbin/chkconsole
ap::sysinit:/sbin/autopush –f /etc/ap/chan.ap
ak::sysinit:/sbin/wsinit 1/etc/wsinit.err 21
ck::sysinit:/sbin/setclk /dev/console /dev/sysmsg 21
bchk::sysinit:/sbin/bcheckrc /dev/console /dev/sysmsg 21
on::sysinit:/sbin/all.online /dev/console /dev/sysmsg 21
is::2:initdefault
pf::powerfail:/etc/powerfail /dev/console /dev/console 21
r0::0:wait:/sbin/rc0 off 1/dev/sysmsg 21 /dev/console
r1::1:wait:/sbin/rc1 1/dev/sysmsg 21 /dev/console
r2::23:wait:/sbin/rc2 1/dev/sysmsg 21 /dev/console
r3::3:wait:/sbin/rc3 1/dev/sysmsg 21 /dev/console
r5::5:wait:/sbin/rc0 reboot 1/dev/sysmsg 21 /dev/console
r6::6:wait:/sbin/rc0 reboot 1/dev/sysmsg 21 /dev/console
sd:0:wait:/sbin/uadmin 2 0/dev/sysmsg 21 /dev/console
fw:5:wait:/sbin/uadmin 2 2/dev/sysmsg 21 /dev/console
JDCM UNIX SVR4 – NA/1 24
rb:6:wait:/sbin/uadmin 2 1/dev/sysmsg 21 /dev/console
li:23:wait:/usr/bin/ln /dev/systty /dev/syscon /dev/null 21
sc:234:respawn:/usr/lib/saf/sac –t 30
co:12345:respawn:/usr/lib/saf/ttymon 22
–g –p “Console login: “ –d /dev/console –l console
tm:123:wait:/sbin/portsetup 23
/dev/null 21
02. Directorio ‘/dev’
1. Determina el camino lógico hacia un dispositivo (pathname).
2. Diferencia dos tipos de manejadores (drivers):
 Bloqueados.
 Caracter (raw).
3. Dispositivos:
 Poseen un número mayor y un número menor asignado.
 Los números mayores apuntan a una rutina manejadora de dispositivo en el kernel.
 Los números menores apuntan a un puerto específico (o canal), controlado por una rutina
manejadora.
03. Archivo ‘/etc/ttydefs’
1. Reemplaza al archivo ‘/etc/gettydefs’ de versiones anteriores.
2. Define las disciplinas de los puertos.
3. Consta de una disciplina base que es buscada por el /etc/getty.
4. Esta disciplina base posee las características generales con las cuales se fijan los atributos de los
terminales o impresoras.
5. Posee los siguientes campos:
CAMPOS DESCRIPCION EJEMPLO
ttylabel El monitor ttymon busca en este archivo una etiqueta tty que concuerde con
la que ha sido configurada para los puertos que este monitor maneja.
9600A:
flags iniciales Similar a su contraparte en el archivo ‘/etc/gettydefs’ i.e., fija los parámetros
stty iniciales para el terminal.
brkint hupcl icrnl
icanon opost onlcr
tab3 ignpar ixon
ixany istrip echo
flags finales Contiene los parámetros a fijarse luego de requerirse una conexión al
‘ttymon’ y justo antes de invocar al servicio de login.
brkint hupcl icrnl
icanon opost onlcr
tab3 ixon ixany
Autobaud Es una opción de velocidad de la línea y puede utilizarse en lugar de fijar la
velocidad en baudiso.el ‘ttymon’ determina la velocidad de la línea al
analizar el primer CR ingresado y fija la velocidad según convenga.
Según el ejemplo, está habilitado 24
A:
Siguiente
etiqueta
Similar función a la de su equivalente en el archivo ‘/etc/gettydefs’. Si el
usuario presiona la tecla BREAK en el prompt del login, ‘ttymon’ busca esta
etiqueta tty como alternativa.
4800
04. Archivo ‘/etc/ttytype’
1. Contiene las entradas para el tipo de terminal (TERM) por defecto (ANSI) para los puertos tty.
2. Tiene la siguiente estructura:
Definición TERM : Puerto
Donde:
Puerto Nombre relativo del archivo especial asociado con el terminal, según se encuentra en ‘/dev/term’.
TERM Ientificación del terminal según el sistema TERMINFO.
05. Archivo ‘/usr/lib/terminfo’
1. Es una base de datos conteniendo las capacidades de los terminales.
JDCM UNIX SVR4 – NA/1 25
2. Define las características de los terminales.
3. Es usado por el editor ‘vi’ y algunas otras aplicaciones que lo requieran.
4. Brinda flexibilidad para crear y adecuar nuevas características de terminal.
5. El comando tic compila las nuevas definiciones de terminal.
6. El comando infocmp permite comparar diferentes archivos de descripción de terminales .e imprimir un
fuente ASCII a partir de un archivo terminfo.
7. El comando captoinfo traduce el antiguo formato /etc/termcap a un fuente capaz de ser compilado
como archivo terminfo.
EL SISTEMA SPOOL
01. Introducción
1. Características:
 Soporta impresoras paralelas y seriales diversas.
 Encola los trabajos de impresión.
 Iniciado automáticamente al ingreso a modo multi–usuario.
2. Permite definir programas de interface (filtros).
3. Permite seleccionar el tipo de impresora (usando la base de datos ‘terminfo’).
4. Permite fijar el tipo de archivos que se pueden imprimir (tipo de contenido).
5. Puede seleccionar el tipo de caracter, formato y margarita (daisy–wheel).
6. Permite habilitar/deshabilitar el encabezado.
7. Posee un sistema de alerta y recuperación en caso de errores.
8. Maneja prioridades de trabajo.
9. Permite restringir el acceso de usuarios a la(s) impresora(s).
10. Archivos de configuración:
 Ubicados bajo los directorios: /etc/lp y /var/spool/lp.
Figura No. 5: Directorios y archivos ‘lp’
02. Directorio ‘/etc/lp’
1. Contiene archivos y directorios que interactúan con las impresoras seriales y/o paralelas conectadas al
sistema.
2. Directorios incluídos:
 forms:
 Categoriza los tipos de formas (formatos) que pueden usarse para una impresora en
particular.
 Se debe definir el tipo de forma para una impresora dada, si es aplicable.
JDCM UNIX SVR4 – NA/1 26
 Ejemplo:
page length: 66
page width: 80
number of pages: 1
line pitch: 6
character pitch: 10
character set choice: any
ribbon color: any
alignment pattern: simple
 interfaces:
 Identifica las impresoras definidas en el sistema.
 Cuando una impresora se adiciona al sistema, una copia del modelo de la impresora (del
directorio ‘/usr/lib/lp/model’ 25
) se coloca en el directorio interfaces bajo el nombre con el
que se conocerá esa impresora.
 Se le usa para:
 Inicializar el puerto de la impresora y la impresora.
 Imprimir la página de cabecera.
 Ejecutar el filtro que prepara el contenido del archivo para imprimit y lo imprime.
 Administra las fallas de la impresora las cuales usualmente son detectadas por el
filtro.
 Deje la impresora para otro trabajo de impresión.
 class:
 Categoriza las impresoras en grupos de impresión equivalentes. Cuando se adiciona una
impresora al sistema, se puede especificar que ésta será miembro de una clase específica.
 Esto significa que todas las impresoras laser del sistema pueden definirse como la clase
“laser” de modo que cualquier requerimiento de los usuarios será servido por el primer
miembro disponible de esta clase.
3. Archivos adicionales de configuración:
 Systems:
 Contiene parámetros asociados con los sistemas que se utilizan para impresión remota.
 default:
 Identifica el nombre de la impresora que el sistema utiliza normalmente.
 printers:
 Es un directorio y se utiliza para contener un directorio (con el mismo nombre de la
impresora definida) por cada impresora adicionada al sistema.
 En cada uno de estos directorios se encuentran los siguientes archivos:
alert.sh Controla el mecanismo de alerta por fallas. Por defecto, cualquier
problema con sus trabajos de impresión se envían como mensaje al
superusuario (via correo).
alert.vars Contiene los estados de alerta 0 (estado de salida) y 1 (salida cuando
ocurre algún error).
configuration Suministra información de configuración de la impresora.
user.deny Para denegar acceso de los usuarios listados aquí a esta impresora.
 Ejemplo:
Banner: on:always
Content types: simple
Device: /dev/term/17
Interface: /usr/lib/lp/model/standard
Printer type: AP9215–e
 pwheels:
 Lista las margaritas para la impresora específica, si es aplicable. No es usado ya en el SVR4.
03. Directorio ‘/var/spool/lp’
1. Contiene directorios que interactúan con el servicio de impresión LP.
2. Directorios incluídos:
 system:
 Contiene un archivo ‘pstatus’ que provee información del estado inicial de la impresora.
 El archivo ‘cstatus’ provee información de estado de las impresoras que pertenecen a una
clase.
 SCHEDLOCK:
JDCM UNIX SVR4 – NA/1 27
 Archivo de bloqueo para prevenir que se ejecuten varios manejadores de impresión.
 requests:
 Contiene un directorio para cada sistema remoto que tiene requerimientos de impresión.
 Cada archivo en estos directorios continene la identificación de la petición de impresión
(request_id) que consiste en el nombre de la impresora y su número de trabajo asignado.
 tmp:
 Contiene un subdirectorio por cada sistema conocido por su Servicio de Impresión.
 Cada uno de etos subdirectorios contiene uno o dos archivos por cada trabajo de impresión:
el número de secuencia del trabajo de impresión seguido por un guión y ya sea un cero (0) o
un uno (1).
 El 0 indica que el archivo contiene los datos de control para el requerimientos de impresión.
 El 1 indica que el archivo contiene una copia del contenido del archivo a imprimirse siempre
y cuando haya sido enviado con la opción –c.
 Ejemplo:
C 1 número de copias
D laser1 impresora destino
F /etc/motd nombre del archivo a imprimir
P 20 prioridad
T simple tipo de contenido
U root usuario que envía el trabajo
S 0000 código de estado
04. El Utilitario ‘lpadmin’
1. Permite adicionar impresoras.
2. Procedimiento para adicionar impresoras:
 Determine el archivo modelo apropiado para la impresora que desea adicionar al sistema. Si no
existe, debe crearlo.
 Verifique que el puerto tty esté configurado con lo siguiente:
Propietario: lp
Grupo: sys
Permisos: 0600
 Adicione la impresora utilizando los comandos:
$/usr/lib/lpadmin –pprinter –v/dev/ttyxxx –mssp31
$/usr/lib/lpadmin –dprinter (opcional)
$/usr/lib/lpadmin –pprinter –cdraft (opcional)
donde:
pprinter Nombre de la impresora que se adiciona.
v/dev/ttyxxx El puerto tty al cual se conecta la impresora serial. Para las impresoras paralelas los puertos
tty son lp0, lp1, etc.
mssp31 Modelo de la impresora que se usará como interface.
dprinter Define la impresora por defecto del sistema.
cdraft Define que la impresora recientemente configurada es miembro de la clase draft.
3. Otras opciones:
T Tipo de impresora, según la base de datos terminfo. Por defecto es ‘unknown’.
I Tipo de contenido por ejemplo, troff, otroff, tex, plot, raster, cif, fortran, postscript,
simple.
o ’banner/nobbaner’ Encabezado activado/desactivado.
M Opción para indicar montaje. Se usa con las opciones ‘ S ’ y ‘ f ’.
S ‘margarita’ Indica qué margarita se va a montar.
f ‘formato’ Indica qué formato se va a trabajar.
o ‘cpi’ El pitch a utilizarse.
o ‘length’ Longitud de página.
o ‘tamaño’ Tamaño de carcter.
F ‘opciones’ Recuperación por fallas. Las ‘opciones’ pueden ser: CONTINUE, BEGINNING,
WAIT.
A ‘comando’ Alerta por fallas. El ‘comando’ puede ser cualquier, con opciones y argumentos.
u ’allow/deny: lista’ Permisos/restricciones de uso para los usuarios en la ‘lista’.
s ‘sys_name’ Impresora remota que trabaja con el sistema de nombre ‘sys_name’.
4. Instruímos la impresora para que acepte trabajos:
JDCM UNIX SVR4 – NA/1 28
accept printer
5. Para habilitar la impresora (en línea):
enable printer
6. Para verificar que la adición de la impresora esté correcta:
lpstat –t
7. Para verificar las configuraciones actuales de una impresora:
lpstat –p printer_id –l
8. Para remover una impresora:
/usr/lib/lpadmin –xprinter
05. Comando ‘lpusers’
Propósito:
Manejo de prioridades de impresión.
Sintaxis:
/usr/lib/lpusers [–ld] [–q ‘prioridad’] [–u ‘usuario’]
Opciones:
 l Examina el nivel de prioridad de todos los usuarios
 d Fija la prioridad por defecto asignada a los trabajos enviados sin prioridad.
Consideraciones:
1. El administrador del sistema permite fijar los niveles de prioridad (0=mayor hasta 39=menor) para
los usuarios y las colas de impresión.
2. Se modifican las prioridades de los trabajos de impresión que esperan ser impresos con el
comando:
lp [–q ‘nueva_prioridad’] [[–i ‘trabajo’] [–H ‘opción’]]
 Donde la ‘opción’ puede ser cualquiera de los siguientes valores de por sí explicativos: HOLD,
IMMEDIATE, RESUME.
06. Procesamiento de requerimientos de impresión
1. Un usuario ejecuta un comando ‘lp’.
2. Este requerimiento se canaliza al manejador del spool ‘lpsched’ el cual efectúa un seguimiento a cada
requerimiento de impresión y al uso de un filtro ‘lento’ 26
opcional.
3. El programa de interface estándar es el archivo modelo de impresora del directorio
‘/usr/spool/lp/model’ que se define cuando se adiciona la impresora al sistema. La entrada ‘terminfo’
se usa para inicializar la impresora física, así como para traducir los comandos de la impresora para que
concuerden con aquellos específicos de la impresora (como fonts, tamaño de página, etc.) 27
.
4. La impresora por defecto, que utiliza un filtro rápido, convierte el archivo del usuario a un formato que
puede ser procesado apropiadamente en la impresora.
JDCM UNIX SVR4 – NA/1 29
comando 'lp'
Servicio de Impresión LP
Manejador de spool
lpsched
Programa de Interface
Cola de
destino del
trabajo de
impresión
Base de
datos
terminfo
filtro lento
opcional
impresora por defecto filtro (opcional)
Configuración
del servicio
de impresión
Figura No. 6: Proceso de trabajos de impresión
JDCM UNIX SVR4 – NA/1 a
APENDICES
BIBLIOGRAFIA
UNIX Networking
Stephen Kochan  Patrick Wood
Hayden Books UNIX System Library
UNIX System Administration
David Fiedler  Bruce Hunter
Hayden Books UNIX System Library
UNIX Shell Programming
Stephen Kochan  Patrick Wood
Hayden Books UNIX System Library
Tricks of the UNIX Masters
Russell Sage
The Waite Group SAMS
UNIX System V Operating System
User’s Guide, ATT
UNIX System V Release 4
System Administrator’s Guide, ATT
NOTAS1 Esto es implícito a la sintaxis para direccionamiento de líneas del editor 'ex' aunque no aparente. Se recomienda analizar el problema y encontrar
la forma de aplicar estas herramientas.
2
Las funciones no pueden ser exportadas.
3
Si se omite en estas funciones el caracter ' : ', el shell sólo chequea si existe o no 'parámetro'.
4
Las llaves se requieren sólo cuando el parámetro es seguido por un caracter que no se va a interpretar como parte del nombre.
5
Si se omite 'palabra', aparece el mensaje: 'parameter not null or not set'.
6
Un script consiste de comandos de edición, uno por línea, de la forma siguiente:
[dirección [dirección] ] función [argumentos]
7
El comando 'sed' selecciona siempre el string más largo posible para satisfacer el criterio de selección.
8
El comando awk revisa los archivos de entrada y automáticamente parte cada línea de entrada en campos. Debido a que realiza varias cosas
automáticamente – entrada, separación de campos, manejo del almacenamiento, inicialización – es que los programas awk son usualmente más
pequeños que lo que serían en un lenguaje convencional.
9
Comúnmente, variable=expresión.
10
Salta los patrones restantes en esta línea de entrada.
11
Salta el resto de la entrada, el estado de salida es 'expr'.
12
Internamente las operaciones matemáticas se realizan en punto flotante.
13
Se usa la hora del día si no se especifica X.
14
Expresión regular.
15
Expresión regular o con FS si no se da 're'.
16
La función getline retorna los siguientes valores:
 1 Si se encontró un registro.
 0 Si se encontró el fin de archivo (EOF).
 –1 Si ocurrió algún error.
17
Sin las comillas, bigpop y smallpop son meras variables sin inicializar. Si los nombres de archivos de salida fueran creados por una
expresión, también debieran ser encerrados entre paréntesis.
18
El operador ' : ' compara 'expr1' con 'expr2' (este último debe ser una expresión regular). La sintaxis es la misma que para 'ed' sin embargo, ya
que todos los patrones se asume que empiezan con ' ^ ', éste no se trata como caracter especial.
19
Se puede obtener parte de 'expr1' si se usa la simbología '(..)'.
20
Se escapa el símbolo ' | ' para evitar que se interprete como símbolo de entubado. Se interpreta en el contexto de 'expr' es decir, 'expr' retorna el
primer argumento si éste no es nulo ni cero de lo contrario, retorna el segundo.
21
Las variables MINWEEKS y MAXWEEKS son conocidas también como valores para vigencia del password.
22
Nuevo proceso para control de puertos tty. Los monitores suministrados son ttymon, listen, inetd. Cuando se recibe una solicitud por
parte del monitor ttymon, él invoca un servicio como login (reemplaza los procesos 'getty' y 'uugetty'). Un monitor ttymon puede servir todos
los puertos necesarios de una tarjeta determinada y cada uno puede ser configurado separadamente.
23
Determina el número de puertos seriales SIO, así como el número de puertos SCP y tarjetas. Verifica la existencia nodal de cada puerto serial.
Chequea y crea el monitor para cada tarjeta así como el servicio de login para cada puerto.
24
Cuando se utiliza esta carcterística, no debe incluirse ninguna velocidad en los flags niciales ni finales.
25
Adicionar una impresora al sistema definiendo su modelo no permite tomar ventaja de las capacidades de la base de datos 'terminfo'. Para usar
esta base de datos se debe definir el tipo de impresora.
26
Los filtros lentos se ejecutan independientemente del manejador spool para evitar atar la impresora.
27
Cuando se adiciona una impresora al sistema en la configuración básica, el tipo de impresora se define como desconocida (unknown).
UNIXWARE AVANZADO
JDCM NA/1 1
Ejercicios
Para todos los problemas/ejercicios siguientes, donde convenga o exista más de una
alternativa de solución, asuma lo que crea conveniente y detalle en base a qué toma su
decisión.
1. Sortee el archivo /etc/passwd por el group–id.
2. Ordene el directorio /etc/lddrv por tamaño, anteponiendo un mensaje como el siguiente:
Número de archivos procesados : ##
Espacio total empleado : ##
y muestre seguidamente cada archivo de este directorio anteponiendo un número de secuencia.
3. Se desea una relación de todos aquellos archivos del sistema con un tamaño mayor a 128k. Deben ser totalmente
identificados y listados. Este proceso debe realizarse todos los días jueves a las 18:00.
4. Se debe obtener una relación de todos aquellos archivos del sistema que pertenezcan al usuario ‘ FF ’ y deben
borrarse del sistema.
5. Escriba un programa el cual llame la atención cada hora entre dos horas predeterminadas.
6. Construya un script el cual permita enviar mensajes a otros usuarios del sistema seleccionándolos de una lista
preparada a partir del archivo ‘ /etc/password ’ (para mostrar sólo el user_id y su comentario separado por
tabuladores) y verificándolos luego con el comando ‘ who ’.
7. Construya un programa que cuente el número de usuarios logeados al final de cada intervalo, así como el número
de procesos ejecutados durante el mismo intervalo. Este intervalo debe especificarse con una opción ( –t por
ejemplo), con un default de 5 minutos y un máximo de 60 minutos.
8. Cree un script que solicite continuamente un dato el cual debe ser un archivo o directorio (si no lo ingresa
directamente). Debe verificar su existencia y mostrar la información indicada:
Tipo : archivo/directorio
Características : r/w/x
Tamaño : ############
No. de links : ##
Fecha de creación: : dd/Mes/AA
Tenga en cuenta que cuando ingrese CR en la solicitud, debe permitirse imprimir toda la información anterior
(siempre y cuando haya algo que imprimir), o simplemente salir del programa indicando cuántos archivos y/o
directorios han sido procesados.
9. Cree un script que brinde la siguiente información en pantalla (utilizando la máscara de salida indicada):
Fecha actual : dd/Mes/AA
Hora actual : HH:MM:SS
No. de usuarios del sistema : ##
10. Cuál es el número total de archivos y de directorios en el sistema?.
11. Se necesita un script que tenga 1 parámetro exactamente: b (para backup) / r (para restore) / l (para listar el
contenido de una cinta). Debe utilizar el comando ‘ find ’. Debe grabar en bloques de 200k. Debe solicitar qué
información debe grabar. En los tres casos debe seleccionarse manualmente la unidad de cinta que va a utilizar de
una relación que el programa le presente (creada en el momento y utilizando los dispositivos el directorio
‘ /dev/rmt ’ que no terminan en ‘ n ’. Antes del trabajo en sí (para los casos de backup o restore) debe existir una
opción para imprimir. Cuando se seleccione la opción de listar, siempre debe imprimirse el resultado por
impresora. Una vez iniciado el trabajo, debo salir del programa pero teniendo en cuenta que se requiere una
notificación de término del programa.
12. Dados los siguientes asignamientos:
 $ x=*
 $ y=?
 $ x=’uno
 • dos
 • tres’ $ ahora=`date`
 $ marca=’’
y estos archivos en su directorio:
 $ echo *  nombres tst1 u vv cebra
Cuál es la salida de los siguientes comandos?:
a) echo *** error ***
b) echo $x
c) echo $z | wc –l
d) echo “$z” | wc –l
e) echo ‘$z’ | wc –l
f) echo _$ahora_
g) echo hola $marca fuera
h) echo “””
i) echo ‘es 5 * 4  18 ?’
j) echo Cuál es tu nombre?
k) echo ***
l) echo $$symbol
m) echo $$symbol
n) echo “”
o) echo “”
p) echo
UNIXWARE AVANZADO
JDCM NA/1 1
Preguntas de exámen
Para todos los problemas/ejercicios siguientes, donde convenga o exista más de una
alternativa de solución, asuma lo que crea conveniente y detalle en base a qué toma su
decisión.
1. Seleccionar todos los archivos cuyos nombres contengan por lo menos tres letras mayúsculas en posiciones
consecutivas y por lo menos un caracter antes de dos números en posiciones consecutivas.

Más contenido relacionado

PPTX
Evolucion de los sistemas operativos
PPTX
La historia de los sistemas operativos
PPTX
dispositivos operativomoviles
DOCX
Taller de Sistemas Operativos
PDF
Unidad 1 actividad_1_1_
PDF
Tema 2. Sistemas operativos tipos UNIX
PPTX
Evolucion De Los Sistemas Operativos
PPTX
La evolucion de los sistemas operativos
Evolucion de los sistemas operativos
La historia de los sistemas operativos
dispositivos operativomoviles
Taller de Sistemas Operativos
Unidad 1 actividad_1_1_
Tema 2. Sistemas operativos tipos UNIX
Evolucion De Los Sistemas Operativos
La evolucion de los sistemas operativos

La actualidad más candente (20)

ODP
Historia de los sistemas operativos
PPTX
Mejia david sistemas operativos
PPTX
breve historia de los sistemas operativos
PPTX
Evolución y clasificación de los sistemas operativos
PPTX
Elmentos del Hardware y software
PDF
Cronología de los sistemas operativos
PPTX
Historia (2)
PPTX
Historia de los sistemas operativos
DOCX
PPTX
Historia de los Sistemas Operativos (Completa)
PPTX
Línea del tiempo de sistemas operativos
PPTX
Sistemas operativos buena
PPTX
Sistemas operativos según el fabricante (microsoft,
PDF
10. cuarta era
PPTX
Historia de los sistemas operativos
PPTX
Unix nueva diapositiva
PPTX
Sistema operativo
PPTX
Presentación1
PPTX
TP 5 individual Bonatti
Historia de los sistemas operativos
Mejia david sistemas operativos
breve historia de los sistemas operativos
Evolución y clasificación de los sistemas operativos
Elmentos del Hardware y software
Cronología de los sistemas operativos
Historia (2)
Historia de los sistemas operativos
Historia de los Sistemas Operativos (Completa)
Línea del tiempo de sistemas operativos
Sistemas operativos buena
Sistemas operativos según el fabricante (microsoft,
10. cuarta era
Historia de los sistemas operativos
Unix nueva diapositiva
Sistema operativo
Presentación1
TP 5 individual Bonatti
Publicidad

Destacado (14)

DOCX
Reseña jaume-carbonell
PDF
Ibm roadshows Sevilla 3 de marzo
PDF
Hojadecálculo fv.
PDF
Thesis
PDF
Spilman Notch quin g-secretase prion
PDF
Realizacion de bloger
DOCX
Paula daDalton Resume 2016
PDF
Ibm ibm exceptional digital experiences
PDF
First Aid Cert
PDF
PDF
Evolution and innovation
PDF
Itil® osa capability model
PPTX
Hereditary brown syndrome
PPT
Uspon osmanskog carstva
Reseña jaume-carbonell
Ibm roadshows Sevilla 3 de marzo
Hojadecálculo fv.
Thesis
Spilman Notch quin g-secretase prion
Realizacion de bloger
Paula daDalton Resume 2016
Ibm ibm exceptional digital experiences
First Aid Cert
Evolution and innovation
Itil® osa capability model
Hereditary brown syndrome
Uspon osmanskog carstva
Publicidad

Similar a Curso: Unixware (20)

DOCX
PPTX
SISTEMAS OPERATIVOS (UNIX & LINUX)
PDF
Trabajo os unix
PPTX
Presentacion de SO UNIX
PDF
Software Generalidades y Sistemas Operativos(1).pdf
PPT
Sistemas Operativos De Red
PPSX
Historia de linux
PPTX
Unix
PPTX
Sistemas operativos
DOCX
115160020 cp101-6
PPT
Sistemas operativos
PPTX
Sistemas Operativos a lo largo de las décadas.
PDF
PPTX
Introduccionalossitemasoperativos
PPTX
Laminas sistemas operativos2
PPTX
Laminas sistemas operativos2
PPTX
Historia y características de Unix y Linux
SISTEMAS OPERATIVOS (UNIX & LINUX)
Trabajo os unix
Presentacion de SO UNIX
Software Generalidades y Sistemas Operativos(1).pdf
Sistemas Operativos De Red
Historia de linux
Unix
Sistemas operativos
115160020 cp101-6
Sistemas operativos
Sistemas Operativos a lo largo de las décadas.
Introduccionalossitemasoperativos
Laminas sistemas operativos2
Laminas sistemas operativos2
Historia y características de Unix y Linux

Más de Jack Daniel Cáceres Meza (20)

PDF
Itil® osa capability model
PPTX
Cobit(R) 5 Fundamentos
PDF
ITIL® SLC Fundamentos
PPTX
Ciclo de vida de un servicio de TI
PDF
MINEDU: Resultados de encuestas: Análisis GAP en OFIN
PDF
Producto alcance política-v2
PDF
Consultoría y servicios TIC -nueva línea de negocio para la RCP (Red Uno)
PDF
UPC - Soporte: Caracterización de soporte
PDF
UPC - Soporte Norma Pases a producción
PDF
UPC - Soporte Norma Control y monitoreo
PDF
UPC - Soporte: Norma Instalación y configuración de equipos
PDF
UPC-Soporte: Norma Administración de cuentas de usuarios
PDF
UPC-Soporte: Norma Mantenimiento de equipos
PDF
UPC - Soporte: Proceso Seguridad de información
PDF
Esan Planeamiento estratégico AFP Horizonte -ppt
PDF
Esan Planeamiento estratégico AFP Horizonte -informe
PDF
OFIN-AIT: Norma Colaboradores
PDF
OFIN: Proyecto seguridad del producto software
PDF
OFIN: Prroceso verificación de la calidad y seguridad del producto software
PDF
MINEDU: PIP solución integral componente 01 servidores
Itil® osa capability model
Cobit(R) 5 Fundamentos
ITIL® SLC Fundamentos
Ciclo de vida de un servicio de TI
MINEDU: Resultados de encuestas: Análisis GAP en OFIN
Producto alcance política-v2
Consultoría y servicios TIC -nueva línea de negocio para la RCP (Red Uno)
UPC - Soporte: Caracterización de soporte
UPC - Soporte Norma Pases a producción
UPC - Soporte Norma Control y monitoreo
UPC - Soporte: Norma Instalación y configuración de equipos
UPC-Soporte: Norma Administración de cuentas de usuarios
UPC-Soporte: Norma Mantenimiento de equipos
UPC - Soporte: Proceso Seguridad de información
Esan Planeamiento estratégico AFP Horizonte -ppt
Esan Planeamiento estratégico AFP Horizonte -informe
OFIN-AIT: Norma Colaboradores
OFIN: Proyecto seguridad del producto software
OFIN: Prroceso verificación de la calidad y seguridad del producto software
MINEDU: PIP solución integral componente 01 servidores

Último (20)

PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PPT
Que son las redes de computadores y sus partes
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PDF
Maste clas de estructura metálica y arquitectura
PDF
Diapositiva proyecto de vida, materia catedra
PDF
SAP Transportation Management para LSP, TM140 Col18
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PPTX
Presentación de Redes de Datos modelo osi
PPTX
Propuesta BKP servidores con Acronis1.pptx
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PDF
Influencia-del-uso-de-redes-sociales.pdf
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
Sesion 1 de microsoft power point - Clase 1
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PDF
Estrategia de apoyo tecnología grado 9-3
PDF
Estrategia de apoyo tecnología miguel angel solis
PPT
introduccion a las_web en el 2025_mejoras.ppt
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
Que son las redes de computadores y sus partes
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
Maste clas de estructura metálica y arquitectura
Diapositiva proyecto de vida, materia catedra
SAP Transportation Management para LSP, TM140 Col18
Power Point Nicolás Carrasco (disertación Roblox).pptx
Presentación de Redes de Datos modelo osi
Propuesta BKP servidores con Acronis1.pptx
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Influencia-del-uso-de-redes-sociales.pdf
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Sesion 1 de microsoft power point - Clase 1
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Estrategia de apoyo tecnología grado 9-3
Estrategia de apoyo tecnología miguel angel solis
introduccion a las_web en el 2025_mejoras.ppt

Curso: Unixware

  • 1. UNIXWARE Autor: Ing. Jack Daniel Cáceres Meza May - 1,915 Agradecemos de antemano cualquier sugerencia que nos hagan llegar Cualquier sugerencia sobre el material aquí expuesto, sírvase hacerla directamente a: Ing. Jack Daniel Cáceres Meza al siguiente teléfono: 5114-475866 ó por escrito a la siguiente dirección: Av. Paseo de La República 3937, Dpto. 102, Surquillo Lima - Perú
  • 2. UNIXWARE BÁSICO JDCM UNIX SVR4 - NB i TABLA DE CONTENIDO ILUSTRACIONES: Pág Figura No. 1: Integración del Sistema Operativo UNIX __________________________________ 1 Figura No. 2: Resumen Arquitectónico del Sistema Operativo UNIX _______________________ 5 Figura No. 3: Jerarquía del Sistema Operativo UNIX____________________________________ 8 Figura No. 4: Funcionamiento del shell _____________________________________________ 11 PARTES CONSTITUTIVAS: Pág BASES DEL SISTEMA OPERATIVO UNIX ______________________________________________ 1 COMANDOS BASICOS ______________________________________________________________ 17 COMUNICACIONES ________________________________________________________________ 38 APENDICES ________________________________________________________________________ a CONTENIDO: Pág TABLA DE CONTENIDO..................................................................................................................i Comandos de Referencia en Línea iii BASES DEL SISTEMA OPERATIVO UNIX ______________________________________________ 1 A. ESTRUCTURA DEL SISTEMA UNIX.........................................................................................1 01. DEFINICION DEL SISTEMA UNIX 1 02. CARACTERISTICAS UNIX 1 03. UN POCO DE HISTORIA SOBRE EL SISTEMA UNIX 1 04. COMPOSICION DEL SISTEMA OPERATIVO UNIX 5 05. CAPAS QUE LO CONFORMAN 5 06. CLASIFICACION DE ARCHIVOS 6 07. CONVENCIONES PARA NOMBRAR ARCHIVOS 6 08. CARACTERES DE REDIRECCIONAMIENTO 7 09. METACARACTERES 7 10. INTERPRETACION DE LOS METACARACTERES 7 11. SU LUGAR EN EL SISTEMA DE ARCHIVOS 7 12. NAVEGANDO POR LA ESTRUCTURA DE ARCHIVOS 7 13. DESCRIPCION DE DIRECTORIOS IMPORTANTES 8 B. ACCESO AL SISTEMA UNIX .....................................................................................................9 01. QUE ES NECESARIO? 9 02. CONVENCIONES GENERALES 9 C. LINEAS DE COMANDO............................................................................................................10 01. INTRODUCCION 10 02. SINTAXIS O COMO EJECUTARLOS 10 03. COMO EJECUTA EL SISTEMA UNIX UN COMANDO 11 D. EDITORES DE TEXTOS............................................................................................................11 01. INTRODUCCION 11 02. COMO TRABAJAN 11 03. EDITOR ‘ed’ 12 04. EDITOR ‘vi’ - PARTE I 13 COMANDOS BASICOS ______________________________________________________________ 17 A. MANEJO DE DIRECTORIOS Y ARCHIVOS............................................................................17 01. Comando ‘pwd’ 17
  • 3. JDCM UNIX SVR4 - NB ii 02. Comando ‘ls’ 17 03. Comando ‘mkdir’ 18 04. Comando ‘rmdir’ 18 05. Comando ‘rm’ 19 06. Comando ‘cd’ 19 07. Comando ‘cp’ 20 08. Comando ‘mv’ 20 09. Comando ‘file’ 21 10. Comando ‘cat’ 21 11. Comando ‘pg’ 22 12. Comando ‘head’ 22 13. Comando ‘tail’ 23 14. Comando ‘diff’ 23 15. Comando ‘wc’ 24 16. Comando ‘grep’ 24 17. Comando ‘sort’ 25 18. Comando ‘cut’ 25 19. Comando ‘find’ 26 B. OTROS COMANDOS.................................................................................................................26 01. Comando ‘date’ 27 02. Comando ‘cal’ 27 03. Comando ‘calendar’ 28 04. Comando ‘banner’ 28 05. Comando ‘split’ 28 C. IMPRESION DE ARCHIVOS - PARTE I....................................................................................29 01. Comando ‘lp’ 29 02. Comando ‘lpstat’ 29 03. Comando ‘cancel’ 30 D. MANEJO DE ACCESOS ............................................................................................................30 01. CONSIDERACIONES EN LOS PASSWORD 30 02. FACTORES PARA VIGENCIA DEL PASSWORD 31 03. Comando ‘passwd’ 32 04. Comando ‘chown’ 35 05. Comando ‘id’ 35 06. Comando ‘groups’ 35 07. Comando ‘chgrp’ 36 08. Comando ‘newgrp’ 36 09. MANEJO DE LOS PERMISOS DE ACCESO 36 10. Comando ‘chmod’ 37 COMUNICACIONES ________________________________________________________________ 38 A. COMUNICACIONES EN EL AMBIENTE UNIX ......................................................................38 01. INTRODUCCION 38 02. ARCHIVOS PARA MENSAJES BASICOS 38 03. Comando ‘tty’ 38 04. Comando ‘stty’ 39 05. Comando ‘news’ 39 06. Comando ‘mesg’ 40 07. Comando ‘who’ 40 08. Comando ‘finger’ 41 09. Comando ‘write’ 41 10. Comando ‘wall’ 42 11. Comando ‘mailx’ 43 APENDICES ________________________________________________________________________ a ACCESO A MS-DOS.........................................................................................................................a BIBLIOGRAFIA a Notas b
  • 4. JDCM UNIX SVR4 - NB iii Comandos de Referencia en Línea  Los siguientes comandos UNIX le brindan acceso en línea a la información del manual de referencia: • MAN Accesa a las entradas del manual de referencia en el sistema. • MANDEX Accesa a un sistema indexado manejado por menú con el fin de buscar los manuales en línea seleccionados para un determinado asunto o comando.  Utilícelos siempre!
  • 6. JDCM UNIX SVR4 - NB 1 BASES DEL SISTEMA OPERATIVO UNIX A. ESTRUCTURA DEL SISTEMA UNIX 01. DEFINICION DEL SISTEMA UNIX a) DEFINIMOS UNIX COMO  Un sistema operativo o conjunto especial de programas (software) que controla el funcionamiento del computador.  Una colección de programas aplicativos denominados a menudo “herramientas” o “utilitarios”. b) QUE ES UN SISTEMA OPERATIVO?  Un conjunto de programas que controla y organiza las actividades de un computador.  Actúa como nexo entre el computador y sus usuarios, terminales, impresoras y dispositivos para almacenamiento de información como discos y unidades de cinta.  Distribuye los recursos del computador al:  Controlar la memoria del mismo,  Controlar y organizar las tareas a realizarse,  Mantener eficientemente el uso de la memoria y dispositivos periféricos. 02. CARACTERISTICAS UNIX  Provee un medio computacional simple, eficiente, flexible.  Ofrece las siguientes ventajas:  Ser un sistema de propósito general para realizar una gran variedad de trabajos o aplicaciones.  UNIX es un ambiente interactivo que permite comunicarse directamente con el computador y recibir respuestas inmediatas a sus requerimientos y mensajes.  Es un ambiente multi-usuario que le permite compartir los recursos del computador con otros usuarios sin sacrificar su productividad.  Es un ambiente multi-tarea que le permite a cualquier usuario el ejecutar más de un programa simultáneamente.  Es portable ya que existe en muchos tipos de computadores y es debido a que está escrito de modo que no se centra en un hardware específico.  Posee herramientas poderosas para desarrollo.  El UNIX SVR4 unifica las versiones importantes de UNIX (BSD, SunOS, XENIX, AT&T) en un producto robusto que sigue los estándares de la industria. XENIX UNIX SVR4 SunOS 4.3BSD UNIX SVR3 Figura No. 2: Integración del Sistema Operativo UNIX 03. UN POCO DE HISTORIA SOBRE EL SISTEMA UNIX
  • 7. JDCM UNIX SVR4 - NB 2 En 1965, los Bell Telephone Laboratories participaron en un proyecto junto con la General Electric Company y el Projecto MAC del MIT (Massachusetts Institute of Technology) para desarrollar un nuevo sistema operativo denominado MULTICS (Multiplexed Information and Computing System). Las metas del sistema MULTICS eran las de proveer acceso simultáneo al computador por parte de una gran comunidad de usuarios, amplio poder de cómputo y almacenamiento de información, y permitir a los usuarios el compartir fácilmente su información, si así lo deseaban. Aunque hacia 1969 estaba corriendo una versión primitiva del sistema MULTICS en un computador General Electric 645, no brindaba el servicio general de computación que se suponía ni tampoco estaba claro para cuándo se lograrían sus metas por lo tanto, la Bell Laboratories suspendió su participación en el proyecto. Sin embargo, puesto que otros sistemas operativos de esos dias eran orientados al proceso batch, Ken Thompson, Dennis Ritchie y otros, miembros del Computing Science Research Center de los Bell Laboratories y participantes en el desarrollo de MULTICS, permanecieron leales a él y decidieron escribir su propio sistema operativo basado en sus mejores características, a la vez que incorporaban algunos conceptos propios. Este sistema operativo fue escrito en lenguaje ensamblador en 1969 y fue llamado UNIX en 1970, habiendo cambiado su nombre del original UNICS (Uniplexed Information and Computing System), dado por Kernighan. Para probar este nuevo sistema operativo se escogió el computador PDP-7 de Digital Equipment Corporation en 1971 (realmente, se encontraba sin uso), y aunque de alguna manera primitivo según los estándares actuales, el PDP-7 UNIX brindó a Thompson y Ritchie un ambiente para programación más amigable que sus alternativas. En este ambiente, los dos continuaron implementando ideas para el Sistema UNIX. Cimentaron las bases para un interpretador de comandos al que denominaron “shell”i. Este shell actúa como intermediario entre el usuario y el computador al traspasar al sistema los comandos ingresados por el usuario y al disponer la ejecución de los mismos. El trabajo con el sistema operativo continuó y durante ese tiempo, el Sistema UNIX fuere-escrito en un lenguaje de alto nivel denominado “B” por su creador Thompson, el cual era interpretativo. En 1971, Ritchie refinó “B” y agregó características de programación estructurada renombrándolo “C”, a la par que ya se podía generar código máquina, declaración de tipos de datos, y definición de estructuras de datos. Pero como un sistema operativo escrito en lenguaje ensamblador es dependiente de la máquina para la cual se escribió, no puede transferirse de una máquina a otra. Hoy sólo unas cuantas rutinas del núcleo del sistema operativo están escritas en lenguaje ensamblador. Puesto que el Sistema UNIX fué re- escrito en el nuevo lenguaje “C” en 1973, tiene la habilidad adicional de ser transportable entre diferentes computadores. Este fué el primer intento de codificar un sistema operativo entero en un lenguaje de alto nivel, y la portabilidad que se consiguió está ampliamente considerada como una de las razones principales de la popularidad que el Sistema Operativo UNIX goza hoy. Durante este período se introdujeron los “pipes” (enlaces, tubos o cauces). Al enlazar la salida (resultado) de un comando con la entrada (órdenes) de otro comando, se pueden encadenar comandos que evitan la creación de excesivos archivos temporales. Por esos años también se iniciaron las herramientas para proceso de textos lo que condujo a que el primer cliente real del sistema UNIX fuera la Oficina de Abogados de Patentes de los Laboratorios Bell. Las mejoras a la estructura del sistema de archivos básico condujeron a la creación de la estructura jerárquica o de árbol, existente hoy. La descripción absoluta del nombre de un archivo en esta jerarquía permite al usuario moverse a través de todos los directorios y redes de archivos en el sistema. Se asignaron nombres a dispositivos tales como terminales, discos, o cintas y a través de estos nombres, el Sistema Operativo UNIX puede comunicarse con cada dispositivo. Dado que el Sistema UNIX tuvo sus raíces en el centro de desarrollo de los laboratorios Bell y en las salas de cómputo de las universidades -ya que éstas escucharon acerca de las actividades en los Laboratorios Bell y empezaron a indagar por el Sistema Operativo UNIX, a través de los años se han desarrollado muchas versiones del sistema UNIX las cuales incorporaron las mejoras y modificaciones creadas por estos esfuerzos de desarrollo. Esto dió lugar a que a finales de los ‘70ii una generación completa de profesionales en informática aprendiera su profesión con el sistema UNIX y que apareciera toda una ola de innovaciones entre las que destaca la ampliamente utilizada versión de la Universidad de California en Berkeley iii -la cual estuvo involucrada en el Sistema UNIX desde 1974 gracias a Thompson. Esta versión es tan importante que la Defense’s Advanced Research Projects Agency (DARPA) de Estados Unidos decidió basar su entorno de computación universal en el Sistema UNIX y lo encargó a Berkeley. El sistema UNIX pasó por varias revisiones internas antes que estuvieran disponibles fuera de los Laboratorios Bell unas pocas copias de la Versión 4 y a fines de 1973 la Versión 5, ésta última por una mínima regalía, pero sin ofrecer soporte para él. En 1976 la Versión 6 fué la primera versión ampliamente difundida y en 1978, el Grupo de Investigaciones de los Laboratorios Bell liberó la Versión 7 para la PDP- 11, seguida por la 32V para sistemas VAX de DEC la cual adiciona paginación de memoria, produciendo el 3BSD (Release 3 de la BSD). Posteriormente, los Laboratorios Bell ATT han desarrollado la Edición Octava y Edición Novena, como investigación interna. Desarrollos posteriores incluyen la Edición Sexta en 1975 y la Edición Séptima en 1977 iv . Las versiones comerciales del Sistema UNIX empezaron en 1977 con el “Programmer’s Workbench System” (PWB/UNIX), que se derivó de la Versión 6. En 1980 Microsoft introdujo el Sistema XENIX v , una variante del Sistema UNIX Séptima Edición y algunos utilitarios del 4.1BSD, que fue diseñado para ejecutarse en microcomputadoras. El System III apareció en 1981 y combinaba características del PWB/UNIX y de la Versión 7.
  • 8. JDCM UNIX SVR4 - NB 3 Sin embargo, algunas restricciones gubernamentales previnieron comercializar esta versión fuera de Bell por el Decreto de Concesión de 1956 del Departamento de Justicia, que impedía que el sistema contuviera tecnología del momento. Una vez que estas restricciones fueron removidas, debido al desmembramiento judicial de las Bell Operating Companies, se anunció el UNIX System V en 1983 vi . Esta versión ofrecía un paquete sofisticado para comunicaciones entre procesos el cual incluía semáforos, mensajes y memoria compartida, así como algunas características tomadas de la versión del sistema de Berkeley de ese entonces como por ejemplo, el editor ‘vi’, el ‘C-shell’, el manejador de base de datos relacional INGRES, control de tareas, redes -las cuales, en 1984 vii , con el 4.2BSD permitieron un amplio acceso a los protocolos Ethernet y TCP/IP los cuales fueron adoptados por muchos vendedores, así como otras nuevas facilidades-. Debido a la portabilidad de los Sistemas UNIX, durante los siguientes dos años se captó rápidamente el interés comercial y compañías como Rand Corp., Yourdon Inc., y Onyx Systems adquirieron las primeras licencias de uso comercial. Luego aparecieron el UNIX System V Release 2 en 1984 -que introdujo protección de archivos durante cortes de potencia, bloqueo de archivos y registros para uso exclusivo por un programa, control de trabajos, entre otras cosas- y el UNIX System V Release 3 en 1987, conocidos como SVR2 y SVR3 respectivamente. Esta última ha incorporado la facilidad de comunicaciones STREAMS y la TLI (Transport Layer Interface) las cuales permiten el soporte de servicios para red en forma independiente del medio y del protocolo, y el FACE (Framed Access Command Environment), que proporciona una interfaz de usuario orientada a menú. Esta sofisticación técnica en aumento, junto con una campaña de mercadeo por parte de ATT, puso al System V en una posición de liderazgo en el mercado mundial, mientras que las versiones BSD resultaban dominantes en las comunidades universitarias y técnicas. En Enero de 1985 ATT liberó la SVID (System V Interface Definition) el cual es un documento legal y protegido para sistemas abiertos no propietarios, la que codificaba muchas de las interfaces del System V Release 2. Fué influenciado por el ‘/usr/group’ Standard viii de 1984, adoptando facilidades como bloqueo de archivos. Al igual que el ‘/usr/group Standard’, la intención del SVID es la de promover la portabilidad de aplicaciones y es de la misma manera, independientes del hardware. Se evitó la información específica de la implementación en lo posible y se utilizaron nombres simbólicos para valores numéricos. El primer volumen del SVID define el sistema base y las extensiones del kernel mientras que el segundo define utilitarios básicos y avanzados, soporte al desarrollo de software, administración del sistema y extensiones para la interface de terminales. Un tercer volumen dado a conocer en 1987 incluye una adición al sistema base que actualiza los dos primeros volúmenes, así como material acerca de nuevas facilidades en el System V Release 3. Este volumen incluye los últimos desarrollos técnicos específicos al System V, como la facilidad de comunicaciones STREAMS y redes. Un nuevo capítulo, titulado SVID89 incluye características del también nuevo System V Release 4, el cual soporta muchas interfaces y comandos adoptados de sistemas BSD y XENIX, interfaces para ventanas, mayor soporte para la administración del sistema, internacionalización y tiempo real, además de incluir el soporte a la X/OPEN Portability Guide Version 3 ix , ANSI-C y POSIX.1 x . A pesar de estos estándares, el mover aplicaciones de una arquitectura de procesadores a otra o aún, entre un equipo de un vendedor y otro utilizando la misma arquitectura resulta costoso y lento. Aquí empezó un esfuerzo para unificar las muchas variantes de UNIX. A principios de 1987, ATT anunció un acuerdo con Microsoft para unir su XENIX en el System V. En octubre del mismo año, ATT y SUN Microsystems anunciaron una alianza en la cual SUN trabajaría con ATT para unir su sistema operativo SunOS -basado en el 4.2BSD- con el SVR4, junto con XENIX. Esto hubiera conducido a un único estándar -unificado- de UNIX si los temores de la competencia no hubieran intervenido. La decisión de ATT de adoptar el microprocesador SPARC como la arquitectura para afinar el sistema UNIX asustó a los competidores de SUN en el mercado de las estaciones de trabajo, que temieron que el rendimiento de UNIX estuviera comprometido en sus propias arquitecturas. Es así que Hewlett Packard, DEC e IBM formaron la OSF xi (Open Software Foundation) en mayo de 1988 para desarrollar su propia implementación de UNIX. En respuesta, los vendedores de hardware y software leales al SVR4 formaron UNIX INTERNATIONAl (UI) xii . El 15 de mayo de 1990, la OSF liberó oficialmente un nuevo estándar para la computación distribuída, el DCE (Distributed Computing Environment). UNIX International ha definido un producto más competitivo que el DCE utilizando la arquitectura ODC (Open Distributed Computing) de UNIX Software Laboratories como el núcleo de su arquitectura la cual denomina ATLAS, y está presente desde el 16 de Setiembre de 1991. a) LA NECESIDAD DEL MERCADO DE UN ESTANDAR A medida que el Sistema Operativo UNIX ha incrementado su sofisticación, también lo han hecho las necesidades de sus usuarios. Los tipos de hardware y diferentes sistemas continúan en aumento. las velocidades y capacidades han aumentado dramáticamente, el sistema corre en hardware que va de micros a minis, multiprocesadores, mainframes y supercomputadores.
  • 9. JDCM UNIX SVR4 - NB 4 Los usuarios de Sistemas UNIX no son más meros programadores o están vigentes sólo en ambientes de investigación académica. La base de usuarios se extiende ahora también al mundo de los negocios: ejecutivos, grupos de soporte, personal de mercadeo e investigadores industriales. Nuevas clases de usuarios demandan nuevas clases de aplicaciones. A medida que los vendedores han adicionado nuevas facilidades a los sistemas para soportar estas nuevas demandas de aplicaciones, sus productos han adquirido a menudo diferentes facilidades y nuevas implementaciones de interface. Con esto, los diferentes sistemas han diferido y se acrecienta la necesidad de estándares. b) ¿POR QUE ESTANDARES? Un estándar de interface para sistema operativo que sea seguido por todos los vendedores permitiría que los programas sean escritos para un ambiente específico en el cual éstos pudieran ser ejecutados sin modificaciones en diferentes sistemas. Para la industria, una portabilidad como ésta es importante ya que permite mayor producción y distribución de aplicaciones. De esta manera, los estándares ahorran tiempo y dinero a los usuarios y a los proveedores, a la par que ofrecen una base firme en un mercado incierto. c) LA ARQUITECTURA ATLAS  Un ambiente completo de servicios y aplicaciones distribuídas: amplia.  Una solución de estado del arte que impulsa la tecnología existente: está establecida.  Una metodología que integra la computación heterogénea sin interrumpir aplicaciones existentes, comunicaciones y/o formatos de datos: no invade otros terrenos. d) ¿QUE PROVEE LA ARQUITECTURA UI-ATLAS?  Necesidades computacionales totales:  Toma las necesidades de tres audiencias claves: » Usuarios finales/centro de datos, » Administradores de sistemas distribuídos, » Desarrolladores de aplicaciones distribuídas.  Administradores de Sistemas.  Administradores de Transacciones.  Compatibilidad con bases instaladas (ahora y en el futuro).  Evolución transparente a partir de tecnología disponible hoy en el System V.  Evolución controlada por la industria (basada en estándares).  Soporte de tecnologías que prometan reducir significativamente el costo del desarrollo/portabilidad de aplicaciones. e) BIBLIOGRAFIA UNIX International UNIFORUM Unix System V Version 4 Kenneth H.Rosen - Richard R. Rosinski - James M. Farber, Osborne/McGraw Hill, 1991 The Design of the UNIX Operating System Maurice J. Bach Prentice-Hall INC./ATT,1987
  • 10. JDCM UNIX SVR4 - NB 5 04. COMPOSICION DEL SISTEMA OPERATIVO UNIX Manipulación de archivos Utilidades Matemáticas Utilidades para manejar impresoras Redes y Comunicaciones Herramientas para Desarrollo de Software Procesamiento de Textos (vi) Compilador 'C' Utilidades para manejar terminales kernel shell Figura No. 3: Resumen Arquitectónico del Sistema Operativo UNIX 05. CAPAS QUE LO CONFORMAN a) KERNEL  Maneja la memoria.  Mantiene el sistema de archivos.  Controla el acceso al computador.  Distribuye los recursos del sistema entre los usuarios. b) FILESYSTEM  Piedra angular del Sistema Operativo UNIX.  Proporciona un método lógico para organizar, obtener y manejar información.  Su estructura es jerárquica, semeja un árbol invertido u organigrama.  Su unidad básica es el archivo. c) SHELL  Es un programa que sirve como interpretador de comandos y permite la comunicación con el sistema operativo.  Pasa los requerimientos al kernel y se asegura que son ejecutados.  El más popular es el Bourne shell.  También es un lenguaje de programación.  Puesto que puede leer las entradas que se le den y retornar mensajes, se le describe como interactivo. d) APLICACIONES O HERRAMIENTAS  Son un conjunto de intrucciones para el computador.
  • 11. JDCM UNIX SVR4 - NB 6  Si un conjunto de instrucciones es ejecutado por el computador sin necesidad de traducirlo entonces a este conjunto se denomina “programa ejecutable” o “comando”.  Son utilitarios diversos (procesadores de texto, hojas de cálculo, graficadores, etc.)  Se utilizan para comunicaciones (comunicaciones simples como entre el terminal del usuario y el computador hasta comunicaciones con otros computadores utilizando protocolos específicos -SNA, X.25, OSI)  Algunas permiten el manejo de información (desde crear un archivo hasta manejar bases de datos con construcciones complejas como disco espejo, etc.)  Otras preparan un ambiente para programación (todos los compiladores disponibles en el mercado) 06. CLASIFICACION DE ARCHIVOS a) ARCHIVO ORDINARIO  Es una colección de caracteres que se trata como una unidad.  Se usan para almacenar información.  Esta información puede ser texto, reporte, comando, etc. b) DIRECTORIO  Es un super archivo que contiene un grupo de archivos relacionados.  Su función es la de ser un puntero a otros archivos o directorios.  A esta relación (jerarquía) se denomina relación padre - hijo ya que los archivos contenidos en un directorio están subordinados a éste. c) ARCHIVOS ESPECIALES  En realidad es un puntero a un dispositivo (impresora, terminal, disco).  Se ubican en general en el directorio /dev.  El sistema los lee y escribe de la misma forma que lo hace con los archivos ordinarios sin embargo,  Los requerimientos de lectura y escritura no activan el mecanismo normal de acceso a archivos sino que activan el manejador del dispositivo asociado con el archivo. 07. CONVENCIONES PARA NOMBRAR ARCHIVOS  Deben ser descriptivos.  Los nombres pueden tener hasta un máximo de 14 caracteres de longitud para el sistema de archivos tipo ‘ s5 ‘ y 256 para el tipo ‘ ufs ‘.  Pueden consistir de: 1. Letras mayúsculas : ( A - Z ) 2. Letras minúsculas : ( a - z ) 3. Números : ( 0 - 9 ) 4. Puntos : ( . ) 5. Comas : ( , ) 6. Caracter subrayado : ( _ )  No pueden tener caracteres especiales (esto es, caracteres diferentes a los mencionados antes).  Deben empezar con un caracter alfanumérico.  No debe haber espacios dentro del nombre.  Las mayúsculas se diferencian de las minúsculas.  Dentro de un directorio los nombres deben ser únicos.
  • 12. JDCM UNIX SVR4 - NB 7 08. CARACTERES DE REDIRECCIONAMIENTO  Input desde un archivo.  Salida hacia un archivo.  Adiciona a un archivo. 09. METACARACTERES  El caracter ‘ ? ‘ identifica un solo caracter: fi? encuentra “fig”, “fin”  El caracter ‘ * ‘ identifica cualquier combinación de cualquier número de caracteres: fi* encuentra “fig”, “figura”, “finura”  El conjunto de caracteres ‘ [ ] ‘ identifica un agrupamiento de caracteres:  fi[gn] encuentra “fig”, “fin”  file[1-4] encuentra “file1”,”file2”,”file3”,”file4”  [Ff]ile encuentra “File” o “file”  [F,g,h]ile encuentra “File” o “gile” o “hile”  file[!1-3] encuentra aquellos archivos que no terminan en 1 o 2 o 3 10. INTERPRETACION DE LOS METACARACTERES  Encerrarlos entre apóstrofes simples ( ‘ ) para tratar todo el dato entre ellos como un solo literal.  Las comillas permiten interpretar dentro del dato algunos caracteres especiales como: $, `, . .  El backslash ( ) que precede a un metacaracter neutraliza su significado.  Los acentos graves o apóstrofes invertidos ( ` ) permiten la sustitución de un comando por su resultado. Ejemplos: $ echo “No haga eso !” No haga eso ! $ echo *** *** $ echo x `*` y x * y $ echo “La fecha es: `date`” La fecha es: Thu Nov 20 12:45:16 EDT 11. SU LUGAR EN EL SISTEMA DE ARCHIVOS  Cada vez que Ud. interactúa con el sistema UNIX, lo hace desde una ubicación precisa dentro de su estructura de archivos.  El Sistema UNIX lo posiciona automáticamente en un punto específico de su sistema de archivos cada vez que Ud. lo accesa.  Desde ese punto Ud. puede moverse a través de la jerarquía para trabajar con sus directorios y archivos y accesar a aquellos que pertenecen a otros usuarios y sobre los cuales Ud. tiene permiso de acceso.  Igualmente, aquí puede crear o borrar archivos y directorios así como controlar el acceso a los mismos. 12. NAVEGANDO POR LA ESTRUCTURA DE ARCHIVOS  Una estructura de archivos UNIX siempre se inicia con un directorio proporcionado por el sistema, denominado “root” y representado por el símbolo “ / “.  Este directorio es la raíz, origen o punto de partida de cualquier otro directorio o archivo que se cree en el sistema.  Un directorio es un archivo que contiene punteros hacia otros archivos u otros directorios. Estos directorios denominados “subdirectorios” pueden a su vez contener punteros hacia otros archivos o directorios, y así sucesivamente.  El formato utilizado para referirse a un archivo en esta estructura es: /directorio/directorio/nombre_del_archivo
  • 13. JDCM UNIX SVR4 - NB 8  Esta estructura de concatenación de archivos utilizando el caracter “ / “ se denomina nombre completo o “pathname”. cuando a Ud. se le asigna un nombre de usuario, también se le asigna un directorio y a éste directorio se le denomina “directorio base”, pudiendo estar localizado en cualquier parte de la estructura de archivos UNIX. El sistema UNIX busca a lo largo del camino correcto hasta que ubica su directorio base; cuando Ud. accesa al sistema UNIX, automáticamente es puesto en ese directorio. El camino entre el directorio raíz y su directorio base es un ejemplo de “pathname”.  En la medida que Ud. continúe trabajando en su directorio base, éste se considera su “ directorio de trabajo “ o “ directorio actual ”.  Si cambia a otro directorio, este nuevo directorio se convierte en su nuevo directorio actual.  Al directorio actual se le representa con un punto ( . ) y es denominado también “ directorio hijo “  El directorio del cual parte o al cual pertenece este último, denominado a su vez “directorio padre”, se representa con dos puntos ( .. ).  Ud. puede navegar a través de la estructura de archivos especificando la “trayectoria absoluta” (o “trayectoria completa”), o la “trayectoria relativa” de un archivo.  Una trayectoria absoluta o completa es el camino hacia un archivo empezando en el directorio raíz.  Una trayectoria relativa es el camino hacia un archivo relativo a su directorio actual o de trabajo. / (root) stand sbin dev etcunix term console home jose maria tmp var usr bin lib sbin ls cat = Directorios = Archivos Ordinarios = Archivos Especiales = Enlaces Figura No. 4: Jerarquía del Sistema Operativo UNIX 13. DESCRIPCION DE DIRECTORIOS IMPORTANTES /bin Contiene programas ejecutables y utilitarios propios del sistema. /dev Contiene archivos especiales que representan dispositivos periféricos como la consola, impresora, terminales, discos, cintas. /etc Contiene programas y archivos que UNIX utiliza para su administración. /lib Contiene librerías para programas y lenguajes (compiladores). Es un enlace simbólico con el directorio ‘ /usr/lib ‘, y es creado para compatibilidad con versiones anteriores de UNIX. /tmp Contiene archivos temporales que pueden ser creados por cualquier usuario o el mismo sistema operativo. /usr Contiene archivos, programas, o utilitarios que son adicionales a los del sistema operativo.
  • 14. JDCM UNIX SVR4 - NB 9 /hinv Contiene archivos de configuración de hardware. Sistema de archivos propio de UNISYS. /home Directorio por defecto para los directorios de los usuarios. /proc Punto de montaje para otro tipo de sistema de archivos. Los archivos aquí contenidos representan los procesos en ejecución en memoria y su nombre es el número de identificación del proceso. /sbin Contienen los programas requeridos por el comando ‘ init ‘ para el proceso de carga o para recuperación a partir de una falla del sistema. También contiene los comandos administrativos para el modo mono_usuario. /stand Punto de montaje para el sistema de archivos de carga (bfs). E. ACCESO AL SISTEMA UNIX 01. QUE ES NECESARIO?  Un terminal con las siguientes características:  Debe estar en línea.  Configurado a:  FULL DUPLEX.  NO PARITY.  BAUD RATE (acorde con el computador).  Generar letras minúsculas siempre.  Se define con la variable TERM:  TERM=tipo_de_terminal  Se hace que el sistema la reconozca para toda la sesión de trabajo con: export TERM  Un nombre para acceso (login) mediante el cual el sistema UNIX lo identifique como usuario autorizado.  Una palabra clave (password) que verifique su identidad. 02. CONVENCIONES GENERALES  Los comandos deben ser ingresados en minúsculas (a menos que se especifique lo contrario)  Existen caracteres especiales simples: • # para borrar un caracter • @ para borrar una línea entera  o compuestos: xiii ### ^d CTRL d, salir del sistema ### ^s / ^q CTRL s / CTRL q, XON/XOFF ### ^h CTRL h, borrar caracter ### ^u CTRL u, borrar línea ### ^c CTRL c, interrumpir la ejecución del comando  o teclas especialmente etiquetadas: • CR Termina una línea y posiciona el cursor en una nueva línea. • ESC Realiza una función específica al usarse con otra tecla. • DEL Anula la línea de comando actual. • BREAK Detiene la ejecución de un comando o programa.  Los nombres para login deben ser de 3 a 8 caracteres, en minúsculas e iniciándose siempre por una letra, sin símbolos. Cada vez que desee ingresar al sistema debe usarlo. La expresión “ login “ se deriva del hecho que el sistema mantiene un “ log “ por cada usuario que ingresa al sistema. La línea que aparece en el terminal:
  • 15. JDCM UNIX SVR4 - NB 10 login: indica que el sistema está esperando su ingreso al mismo.  El nombre para los password debe seguir las siguientes normas:  De 6 a 8 caracteres, pero su longitud se puede definir en el archivo ‘/etc/default/passwd’.  Por lo menos dos caracteres alfanuméricos (mayúsculas o minúsculas) y por lo menos 1 caracter especial o numérico.  Debe ser diferente del login incluso, no debe ser el inverso o rotación de éste. Para la verificación, mayúsculas y minúsculas son lo mismo.  Por razones de seguridad, el sistema UNIX no muestra este nombre en pantalla. Aparece inmediatamente después que ha ingresado el login: login: empleado CR password: F. LINEAS DE COMANDO 01. INTRODUCCION  Un programa es un conjunto de instrucciones para el computador.  Todos aquellos programas que puede ejecutar el computador sin necesitar transformación previa se denominan archivos ejecutables o comandos.  El sistema UNIX le brinda muchos programas estandard y herramientas con los cuales Ud. puede:  Procesar textos (editarlos).  Manejar información esto es, organizar el filesystem.  Transmitir y/o recibir información de otros sistemas (comunicación electrónica).  Desarrollar software (establecer ambiente para programación amigable).  Accesar a utilitarios adicionales (para gráficos o cálculos). 02. SINTAXIS O COMO EJECUTARLOS  Con el fin de que sus requerimientos sean comprensibles para el sistema UNIX, Ud. debe presentar cada comando en el formato o sintaxis de comando correcto.  La sintaxis define el orden en el que debe ingresar los componentes de una línea de comando: comando opcion(es) argumento(s) donde: • comando Es el nombre del comando/programa que se desea ejecutar • opción Modifica la forma en que el comando se ejecuta (usualmente precedido por “ - “). • argumento Especifica la información sobre la que opera ese comando.  Las palabras que componen un comando completo se separan por lo menos con un blanco (un espacio o una tabulación).  Si un argumento contiene blancos debe encerrarlo entre comillas.  Algunos comandos le permiten especificar múltiples opciones y/o argumentos en una línea de comandos.  Las opciones deben estar separadas por un guión ( - ) y espacios en blanco entre ellas.  O por lo menos un guión y las demás opciones juntas, sin espacios en blanco ni guiones. Ejemplo: incorrecto correcto wcfile wc file
  • 16. JDCM UNIX SVR4 - NB 11 wc-lfile wc -l file wc -l w file wc -l -w file wc file1file2 wc file1 file2 03. COMO EJECUTA EL SISTEMA UNIX UN COMANDO USUARIO SHELL KERNEL PROGRAMAS COMANDOS UTILITARIOS ETC. Figura No. 7: Funcionamiento del shell  Luego de presionar la tecla CR para ejecutar un comando, el shell:  Chequea que exista el comando.  Chequea los permisos.  Analiza los argumentos y opciones de la línea de comando.  Inicia el proceso.  Al terminar vuelve al prompt. H. EDITORES DE TEXTOS 01. INTRODUCCION  Un editor de textos realiza las tareas de insertar, adicionar, borrar o transponer textos y finalmente, preparar una copia limpia y corregida de éstos logrando que su escritura y revisión sea mucho más fácil y rápida que si se hiciera manualmente.  Para el sistema UNIX, los editores de textos son programas interactivos que aceptan comandos propios y luego realizan las funciones requeridas. 02. COMO TRABAJAN  Tan pronto como un editor es invocado éste separa un espacio de trabajo temporal denominado “buffer de edición” y cualquier información que pueda ingresar mientras se edita un archivo, se almacena en este buffer donde puede modificarse.  No importa si Ud. crea o actualiza un archivo, el texto dentro del buffer está organizado en líneas que son simplemente una serie de caracte-res que aparecen horizontalmente en la pantalla y terminan cuando presiona la tecla RETURN.  Se diferencian dos modos de operación: de comando y de operación.  Cuando se inicia una sesión de edición, ésta comienza en modo comando pero sólo puede modificar, adicionar o crear un texto en el modo texto y en este modo, todos los caracteres que tipee se colocan en el buffer como parte de su archivo texto.  El editor de líneas es muy rápido. Manipula texto línea por línea de modo que se necesita especificar el número de la línea que desea trabajar.  El editor de pantalla es una herramienta interactiva orientada a la visualización de un texto en toda la pantalla, página por página. Esto permite posicionar el cursor en cualquier punto de la pantalla en donde se quiera modificar algo, logrando resultados inmediatos. Este editor consume recursos del computador:
  • 17. JDCM UNIX SVR4 - NB 12 procesador (debido al reformateo de la pantalla por cada cambio realizado), disco (ya que genera archivos intermedios para su trabajo), si los cambios son mayores. 03. EDITOR ‘ed’ a) INGRESO Y SALIDA DEL EDITOR Ingresamos: $ed archivo Aparece: • ? archivo Si no existe, indicando que es nuevo. • xxx Donde ‘xxx’ es el número de bytes existentes en el archivo. Salimos: • q En modo comando. b) CARACTERISTICAS GENERALES  Pasamos a modo comando al presionar “ . “ como único caracter en la línea.  Guardamos el texto en el archivo especificado al presionar “ w “ como único caracter en la línea.  En general, todo comando debe ser ingresado solo, como único caracter en la línea.  El editor no indica en qué modo se está trabajando a menos que se ejecute el comando “P” el cual muestra un “ * “ cada vez que se ingresa al modo comando.  Si deseamos cambiar el “ * “ (prompt), lo podemos hacer en el momento que invocamos el editor y usamos la opción: “ -p “ (este prompt puede ser uno o varios caracteres) $ed -p prompt archivo  Un comando ‘ed’ consta de hasta 3 componentes: posición comando opción donde la posición se refiere a la línea (o líneas) sobre las que se desea trabajar. Si no se especifican líneas, la operación se realiza sobre la línea actual en el buffer (la última en la que se estuvo trabajando).  Dos líneas separadas por una coma se interpreta como un rango de líneas.  Cuando una sesión de edición termina anormalmente, el sistema operativo UNIX trata de salvar el contenido del buffer de edición en el archivo ‘ed.hup’ en el directorio de trabajo. c) COMANDOS PROPIOS • [.]a Adiciona líneas tras la actual. • [.,.]c Modifica un rango de líneas. • [.]i Inserta líneas delante de la actual. • [.,.]p Muestra un rango de líneas. • . Indica la línea actual en modo comando o, pasa de modo texto a modo comando. • $ Indica la última línea. • ! cmnd Ejecuta un comando externo en forma temporal. Ejemplos: 3i Ingresa al modo texto e inserta un texto digitado antes de la línea 3. 8c Ingresa al modo texto y reemplaza la línea 8 por otro texto digitado. 1,5c Ingresa al modo texto y reemplaza las líneas 1 a la 5. 5p Muestra la línea 5. 2,6p Muestra las líneas 2 a la 6. $c Ingresa al modo texto y cambia el texto de las líneas 10 hasta el final del archivo. !ls Muestra el contenido del directorio actual y retorna al editor. La salida de este comando no es parte del archivo que se edita.
  • 18. JDCM UNIX SVR4 - NB 13 d) OTROS COMANDOS • 1,$p Muestra todo el archivo. ### ,p Igual al anterior. • .,$p Muestra el contenido del archivo entre la línea actual ( . ) y la última línea ( $ ). • n Muestra la línea y el número de la línea actualmente en el buffer. • 1,$n Muestra todas las líneas con número de línea. ### = Muestra el número de líneas del buffer. ### + o RETURN, pasa a la siguiente línea, mostrándola. ### - Pasa a la línea anterior, mostrándola. • l Muestra caracteres visibles y no visibles de la línea actual. • [.,.]mn Mueve el rango de líneas especificado por [.,.] después de la línea ‘n’. • [.,.]tn Copia las líneas especificadas por [.,.] después de la línea n. • [.,.]d Remueve las líneas especificadas por el rango [.,.]. ### /texto/ Búsqueda del “texto”xiv hacia adelante. ### / Siguiente ocurrencia xv hacia adelante del “texto” previamente establecido. • ?texto? Búsqueda del “texto” hacia atrás. • ? Siguiente ocurrencia hacia atrás del “texto” previamente establecido. • [.,.]s/antiguo/nuevo/ Sustitución simple de la primera ocurrencia en la línea del texto “antiguo” por el “nuevo”. • [.,.]s/antiguo/nuevo/g Sustitución global del texto “antiguo” por el “nuevo” en la línea. • [.,.]s/antiguo/nuevo/p Muestra el resultado de la sustitución del texto “antiguo” por el “nuevo”. • u Deja sin efecto el último comando efectuado. • H Causa que automáticamente se muestre un mensaje de error cada vez que aparece “ ? “. • h Causa que se muestre un mensaje de error explicando la razón del “ ? “ más reciente. • [1,$]w[archivo] Graba el contenido del buffer actual en un “archivo” diferente al original. Ejemplos: .= Muestra el número de la línea actual m4 Mueve la línea actual después de la línea 4 $m0 Mueve desde la línea 5 hasta la última hacia el inicio del archivo 1,4t10 Copia las líneas 1 a 4 colocándolas después de la línea 10 +3p Muestra las 3 líneas posteriores a la actual 5p Muestra las 5 líneas anteriores a la actual 5d Remueve la linea 5 5,6d Remueve las líneas 5 y 6 s/a 12/b 14/ Reemplaza la primera ocurrencia de “a 12” por “b 14” en la línea actual. s2s/azul//g Borra todas las palabras “azul” de la línea 2. $s/azul/mar/gp xvi Reemplaza todas las ocurrencias de la palabra “azul” por la palabra “mar” y muestra los resultados. 04. EDITOR ‘vi’ - PARTE I a) INGRESO Y SALIDA DEL EDITOR Ingresamos: $vi archivo Aparece: ~ ~ . . . ~ “archivo” [New file]
  • 19. JDCM UNIX SVR4 - NB 14 Salimos: ### :q Pasamos a modo comando y digitamos ‘ q ‘ seguido de CR. b) CARACTERISTICAS GENERALES  Pasamos a modo comando al presionar ESC.  Invocamos a la línea de comando con “ : “ (siempre aparece en la última línea).  Guardamos la información con la siguiente secuencia: ESC + “ : “ + “ w “  Utiliza toda la pantalla, el cursor aparece en la columna superior izquierda, llena la pantalla con tildes ( ~ ) indicando que no hay información.  Al igual que el editor `ed`, `vi` nos proporciona una forma de distinguir entre el Modo Comando y el Modo Texto: $vedit archivo el editor muestra el modo de operación en la esquina inferior derecha de la pantalla.  Depende de las características específicas y capacidades de cada terminal.  Cuando una sesión termina anormalmente, UNIX salva el contenido del buffer de edición en un archivo en el directorio de trabajo teniendo el mismo nombre que el archivo de trabajo. Se recupera con la opción siguiente: vi -r nombre_de_archivo c) COMANDOS BASICOS (1) ADICION E INSERCION DE TEXTO • a Adiciona caracteres a la derecha del cursor. • A Adiciona caracteres después del último caracter de la línea. • i Inserta caracteres antes del cursor. • I Inserta caracteres al inicio de la línea. • o Abre una línea en blanco bajo la línea actual. • O Abre una línea en blanco sobre la actual. Ejemplos: Texto original : Una línea de texto Adicionamos : xxzz Cursor ubicado en : ‘e’ de ‘línea’ Comando Resultado a Una línexxzza de texto A Una línea de textoxxzz i Una línxxzzea de texto I xxzzUna Línea de texto o Una línea de texto xxzz O xxzz Una línea de texto (2) BORRADO DE TEXTOS • e Del cursor al final de la palabra. • w Del cursor al inicio de la palabra. • $ Del cursor al final de la línea. • 0 Del caracter antes del cursor hasta el inicio de la línea. • b Del caracter antes del cursor hasta el inicio de la palabra. • [n] Número de caracteres a borrar hacia la derecha (x) o izquierda (X). • xp Intercambia el caracter bajo el cursor por el de su derecha.
  • 20. JDCM UNIX SVR4 - NB 15 d) MOVIMIENTO DEL CURSOR (1) MOVIMIENTOS BASICOS DEL CURSOR • [n]k Mueve el cursor ‘ n ‘ líneas hacia arriba. • [n]j Mueve el cursor ‘ n ‘ líneas hacia abajo. • [n]G Mueve a la línea ‘ n ‘ • H A la primera fila, primera columna de la pantalla. • G A la última línea del archivo. • M A la mitad de la pantalla. • L A la última línea de la pantalla. • CTRL b Muestra página anterior. • CTRL f Muestra siguiente página. • CTRL d Mueve 12 líneas hacia abajo. • CTRL u Mueve 12 líneas hacia arriba. • CTRL g Muestra la línea actual, el número total de líneas del archivo y el porcentaje que esta línea representa del total. (2) MOVIMIENTO DENTRO DE UNA PANTALLA • nH Mueve el cursor hacia la línea ‘ n ‘ contada desde la línea superior de la pantalla. • nL Mueve el cursor hacia la línea ‘ n ‘ contada desde la línea inferior de la pantalla. ###^E Baja la ventana una línea. ###^Y Sube la ventana una línea. ###^L Blanquea y redibuja la pantalla. (3) MOVIMIENTO DENTRO DE LINEAS • 0 Cero al inicio de la línea. ###^ Primer caracter de la línea actual (ignora espacios y tabulaciones). • $ Al final de la línea. • CR Inicio de la línea siguiente. ###+ Inicio de la línea siguiente (en el primer caracter no blanco). ###- Inicio de la línea anterior (en el primer caracter no blanco). • w Una palabra hacia adelante. • b Una palabra hacia atrás. • [n]h Mueve el cursor ‘ n ‘ caracteres a la izquierda. • [n]l Mueve el cursor ‘ n ‘ caracteres a la derecha. Igual a la barra espaciadora. ###^D Resetea el margen izquierdo de una autoedición. (4) MOVIMIENTO POR BLOQUE DE TEXTO • e Fin de palabra. • E Fin de palabra (ignorando puntuación). • b Retrocede una palabra. • B Retrocede una palabra, ignorando puntuación. • w Adelanta una palabra. • B Adelanta una palabra, ignorando puntuación. ###// Dos slashes: repite la última búsqueda. (5) MODIFICAR TEXTO • D Borra desde el cursor hasta el final. • dd Borra toda la línea incluyendo el CR. • [n]c[rango] Modifica el texto que se especifica en “rango”, el número de líneas especificado en ` n `. • cc Cambia toda la línea sin el CR. • [n]yy Copia las líneas especificadas por ` n ` a un buffer temporal. • [n]Y Igual que ` yy `. • p Copia la(s) línea(s) del buffer temporal debajo de la línea actual. • P Copia la(s) línea(s) del buffer temporal encima de la línea actual. • CR En el modo texto parte la línea a partir del caracter sobre el que está el cursor. • J Une dos líneas. • u Deshace el comando anterior. • U Deshace todos los comandos dados a la línea actual.
  • 21. JDCM UNIX SVR4 - NB 16 ###/patrón Busca hacia adelante el patrón indicado. ###/ La siguiente ocurrencia hacia adelante del texto anterior. ###/patrón/- Posiciona el cursor en el inicio de la línea sobre ‘patrón’. ###/patrón/+2 Posiciona el cursor dos líneas por debajo de ‘patrón’. • ?texto Busca hacia atrás el texto indicado. • ? La siguiente ocurencia hacia atrás del texto anterior. • n Repite el comando de búsqueda en la dirección previamente especificada. • s Sustituye caracteres (actúa igual al comando ‘ cl ‘). • S Sustituye líneas (actúa igual al comando ‘ cc ‘). • N Repite el comando de búsqueda en la dirección opuesta. ###:wCR Graba el archivo. ###:qCR Sale del editor. ###:wqCR Graba el archivo y sale del editor. ###:q!CR Sale del editor sin grabar nada. • r Reemplaza el caracter bajo el cursor. • R Reemplaza un texto a partir del cursor (hasta presionar la tecla Escape: ESC). • n- Corre ‘ n ‘ columnas a la izquierda. • n- Corre ‘ n ‘ columnas a la derecha. • mx Marca la posición del cursor con el caracter especificado por ‘ x ‘. • ‘x Acento grave: mueve el cursor a la posición marcada por ‘ x ‘. • d`x Acento grave: borra desde el cursor hasta (pero no incluyendo) la posición marcada uniendo las líneas parciales restantes. • d’x Apóstrofe: borra todas las líneas completas desde donde está el cursor hasta incluir la posición marcada. (6) COMANDOS ‘:’ ###:e [file] Blanquea el buffer y carga “ file “ en el buffer (edita otro archivo). ###:r [file] Inserta “ file “ debajo de la línea donde se encuentra el cursor. ###:r!cmd Carga la salida de un comando shell en el texto y donde está ubicado el cursor. ###:!cmd Ejecuta un solo comando shell y luego retorna al editor. ###:n Edita el siguiente archivo de la lista. ###:g/x/cmd Ejecuta un comando ‘ ed ‘ en todo lo que concuerde con ‘ x ‘. ###:m,nwfile Adiciona líneas desde la ‘ m ‘ hasta la ‘ n ‘ al ‘ file ‘. ###:m,nm# Mueve las líneas desde la ‘ m ‘ hasta la ‘ n ‘ después de la línea ‘ # ‘. ###:m,nco#/m,nt# Copia las líneas desde la ‘ m ‘ hasta la ‘ n ‘ después de la línea ‘ # ‘. (7) BUSQUEDA Y REEMPLAZO TOTAL ###:[.,.]s/texto_antiguo/texto_nuevo/opciones Sustituye el “texto_antiguo” por el “texto_nuevo” dentro del rango especificado. Las opciones son las del editor ‘ ed ‘. ###:1,30s/texto1/texto2/gc Pide confirmar cada reemplazo (si se acepta se presiona ‘ Y + CR ‘, para ignorar se presiona sólo CR. ###:s/est.e/este Asumiendo que ‘est007e’ sea lo primero, se remueve ‘007’. ###:%s/texto1/texto2/g Busca todas las líneas y reemplaza todas las ocurrencias de ‘texto1’ por ‘texto2’. ###:g/texto1/s//texto2/g Busca el patrón ‘texto1’ en forma global, luego reemplaza toda ocurrencia de este ‘texto1’ por ‘texto2’ en las líneas encontradas. ###:g/texto1/s/texto2/texto3/g Busca el patrón ‘texto1’ en forma global, luego reemplaza toda ocurrencia de ‘texto2’ por ‘texto3’ en las líneas encontradas. ###:.,+3 Muestra desde la línea actual ( . ), 3 líneas más. Si se usa el signo negativo, serán 3 líneas menos. ###:1,$s Busca en todas las líneas del archivo. ###:%s Igual al anterior.
  • 22. JDCM UNIX SVR4 - NB 17 COMANDOS BASICOS A. MANEJO DE DIRECTORIOS Y ARCHIVOS 01. Comando ‘pwd’ Propósito: Mostrar el nombre del directorio de trabajo. Sintaxis: /usr/bin/pwd Opciones: Ninguna Consideraciones: Ninguna Ejemplo: $ pwd /usr/lib 02. Comando ‘ls’ Propósito: Mostrar el contenido de uno o más directorios. Sintaxis: /usr/bin/ls [-RalFs] { nombres } Opciones: • R Muestra sucesivamente todos los subdirectorios encontrados. • a Lista todas las entradas, incluso aquellas que empiezan con ( . ), normalmente ocultas. • l Listado detallado. • F Pone un ( / ) después de cada nombre de archivo si éste es un directorio o un ( * ) si es un archivo ejecutable. • s Proporciona el tamaño en bloques, incluyendo bloques indirectos. Consideraciones:  La salida está sorteada alfabéticamente por defecto.  Cuando no se da el argumento (‘nombres’ en este caso), se trabaja sobre el directorio actual.  La salida detallada incluye (todo esto por cada archivo mostrado): 1. Modo 2. Número de enlaces ó número de nombres con que se le reconoce en todo el sistema 3. Nombre del propietario 4. Nombre del grupo de trabajo al cual pertenece el propietario 5. Tamaño en bytes 6. Fecha y hora en que el archivo fué modificado por última vez 7. Nombre del archivo.  El ‘modo’ consiste en 10 caracteres.  El primero puede ser uno de los siguientes: • d Si la entrada es un directorio • b Si la entrada es un archivo especial de acceso por bloques.
  • 23. JDCM UNIX SVR4 - NB 18 • c Si la entrada es un archivo espe-cial de acceso por caracter. • p Si la entrada es un archivo especial FIFO (denominado ‘pipe’). ### - Guión, si la entrada es un archivo ordinario.  Los siguientes 9 caracteres se interpretan como conjuntos de 3 bit cada uno.  El primer conjunto se refiere a los permisos del propietario sobre el archivo.  El segundo conjunto se refiere a los permisos de los demás componentes del grupo de trabajo sobre este archivo.  El tercer grupo se refiere a todos los demás usuarios que no son propietarios ni pertenecientes al mismo grupo de trabajo.  Dentro de cada conjunto, los tres caracteres indican permisos para: • r leer • w modificar • x ejecutar ### - no se brinda permiso alguno Ejemplo: $ ls -la total 9 drwxr-xr-x 2 stu2 stud 480 Aug 30 10:25 letra -rw-r—r-- 1 stu2 stud 264 Sep 05 09:37 memo -rw-rw-rw- 1 stu2 stud 230 Aug 25 09:50 .carta 03. Comando ‘mkdir’ Propósito: Crear un directorio. Sintaxis: /usr/bin/mkdir [-p] { nombre_de_directorio } Opciones: • p Se crea el ‘nombre_de_diretorio’ solicitado creando antes todos los directorios padres necesarios. Consideraciones:  Las entradas estandard en un directorio (archivo ‘ . ‘ para el mismo directorio y ‘ .. ‘ para el directorio padre) se hacen automáticamente.  Este comando no las puede crear por nombre.  Se requiere tener permiso en el directorio padre para crear un directorio.  Si se trata de crear un directorio con la opción ‘-p’ y éste existe, se envía un mensaje de error. Ejemplo: $ mkdir user1 Crea el directorio ‘user1’ debajo del directorio de trabajo actual $ mkdir -p /usr1/user3 Crea el directorio ‘usr1’ y luego el directorio ‘user3’, asumiendo que ninguno exista. 04. Comando ‘rmdir’ Propósito: Remover un directorio (vacío). Sintaxis: /usr/bin/rmdir [-p] { nombre_de_directorio } Opciones: • p Permite la remoción del directorio ‘nombre_de_directorio’ y sus directorios padres.
  • 24. JDCM UNIX SVR4 - NB 19 Consideraciones:  Usando la opción ‘-p’ se imprime un mensaje indicando si parte o toda la trayectoria es removida o permanece por alguna razón (no tiene permiso de escritura, no pertenece al usuario). Ejemplo: $ rmdir /usr/acct/user1 05. Comando ‘rm’ Propósito: Removemos archivos. Sintaxis: /usr/bin/rm [-fir] { archivo / directorio } Opciones: • f Ocasiona la remoción de todos los archivos (protegidos o no) sin notificar al usuario. No se remueven los archivos de un directorio protegido. • i Se pide confirmación para la remoción de un archivo protegido en forma interactiva. • r Ocasiona la remoción de todos los directorios y subdirectorios de la lista de argumentos. Consideraciones:  Con la opción ‘ -r ‘ primero se borran los archivos contenidos en el directorio especificado y luego se borra éste.  Se pide confirmación cuando se remueve cualquier archivo protegido.  La confirmación se inactiva cuando se utiliza la opción ‘ -f ‘.  No se pueden borrar los directorios ‘ . ‘ ni ‘ .. ‘.  Un directorio/archivo está protegido cuando no tiene permiso de modificación (escritura) o cuando no pertenece al usuario. Ejemplo: $rm -r /usr1/local $rm -f /usr1/local/prg $rm [A-Z]file*.cob 06. Comando ‘cd’ Propósito: Cambiamos de un directorio de trabajo a otro. Directorio de residencia: Comando interno del shell. Sintaxis: cd {directorio} Opciones: Ninguna Consideraciones:  Si no se especifica ‘directorio’ se utiliza el directorio base como directorio de trabajo es decir, se retorna al directorio base desde cualquier directorio donde se encuentre.  Si se especifica ‘directorio’, éste se convierte en el nuevo directorio de trabajo. Ejemplo:
  • 25. JDCM UNIX SVR4 - NB 20 $ pwd /usr/acct/user1 $ cd /usr/lib/ter2 $ pwd /usr/lib/ter2 $ cd $ pwd /usr/acct/user1 Muestra directorio actual Cambio a otro directorio de trabajo Muestra nuevo directorio de trabajo Cambia a directorio original Confirma el cambio 07. Comando ‘cp’ Propósito: Copiar archivos. Sintaxis: /usr/bin/cp [opciones] [full_pathname/ [full_pathname/ archivo_fuente] archivo_destino] Opciones: • i Pide confirmación antes de sobreescribir en un archivo_destino. • r Si el archivo_fuente es un directorio, lo copia así como a sus archivos, incluyendo subdirectorios. Consideraciones:  Las respuesta posibles son: Y para SI y cualquier otro caracter para NO.  Si el “archivo_destino” existe, es reemplazado por el “archivo_fuente”.  Dentro de un mismo directorio, “archivo_fuente” y “archivo_destino” deben tener nombre distinto.  Si el archivo_fuente es un directorio, el archivo_destino también debe serlo y deben encontrarse en el mismo sistema de archivos.  Si el archivo_destino es un archivo, su contenido se sobreescribe pero el modo, propietario, y grupo asociados no cambian pero sí el tiempo de modificación y acceso. Ejemplo: $cp -r /usr1/file1 /usr2 $cp -i cp: overwrite /usr2/file5? /usr1/file1 /usr2/file5 $cp file1 file4 08. Comando ‘mv’ Propósito: Mover o renombrar archivos. Sintaxis: /usr/bin/mv [-fi] { archivo_fuente } { archivo_destino } Opciones: • f Renombra el “archivo_fuente” sin importar sus permisos. • i Pide confirmación antes de renombrar un archivo existente. Consideraciones:  Las respuesta posibles son: Y para SI y cualquier otro caracter para NO.  Dentro de un mismo directorio no puede haber dos archivos con el mismo nombre.  Si existen “archivo_destino” y “archivo_fuente”, éste último reemplaza al primero.  Si se determina que los permisos del “archivo_destino” prohíben su modificación, el comando muestra estos permisos requiriendo una respuesta (sí o no).
  • 26. JDCM UNIX SVR4 - NB 21 Ejemplo: $mv /usr1/file1 /usr2 $mv file3 /usr1/file9 $mv /usr1/file3 /usr2/file5 09. Comando ‘file’ Propósito: Identificar el tipo de archivo. Sintaxis: /usr/bin/file [-c] { argumento } [-f archivo] Opciones: • c Causa que el comando revise los “argumentos” buscando errores de formato. • f Ocasiona que se tome “archivo” como aquel que contiene los nombres de los archivos a ser examinados (argumentos). Consideraciones:  Normalmente no se emplea la opción ‘ -c ‘ por razones de eficiencia.  El comando lee cada argumento y distingue los siguientes tipos de archivos: archivos de clasificación datos data shell scripts command text ejecutables executable programas texto xxx text 10. Comando ‘cat’ Propósito: Mostrar el contenido de un archivo. Sintaxis: /usr/bin/cat [-sve] { archivo } Opciones: • s Elimina mensaje de error cuando no se encuentra algún archivo. • v Muestra los caracteres no visibles normalmente (excepto tabuladores, saltos de página, nuevas líneas). • e Ocasiona que al final de la línea y antes del caracter de nueva línea se imprima un caracter “ $ “. Consideraciones:  El comando lee cada archivo en secuencia y lo escribe en la salida estandard.  Los caracteres de control ASCII (octal 000 - 037) se imprimen como ‘ ^n ‘, donde n es el caracter ASCII correspondiente en el rango octal 100 - 137 es decir: @, A, B, .... ,X, Y, Z, [, , ], ^, _ .  Para mostrar más de 23 líneas utilizar ^s, ^q Ejemplo: $ cat Texto Imprime el contenido de “Texto” en pantalla
  • 27. JDCM UNIX SVR4 - NB 22 11. Comando ‘pg’ Propósito: Otra forma de mostrar el contenido de un archivo, esta vez formateado. Sintaxis: /usr/bin/pg [-p string -c +línea +/patrón/] { archivo } Opciones: • p string Por cada pantalla imprime ‘string’ al término de ésta. • c Mueve el cursor a la posición (0,0), borra la pantalla antes de continuar. • +línea Desde qué línea empieza a mostrar el archivo • +/patrón/ Busca un patrón específico y muestra el archivo a partir de la primera ocurrencia del ‘patrón’. Consideraciones:  Permite visualizar el contenido de un archivo una pantalla a la vez.  Cada pantalla es seguida por un prompt ‘string’ o el valor por defecto (default) ‘ : ‘.  Se pasa de una pantalla a la otra presionando CR.  Se termina la visualización presionando la tecla ‘ q ‘.  Permite retroceder en la visualización del texto.  Entre las respuestas que pueden darse cuando el comando ‘pg’ espera por ellas se encuentran: • $ Muestra la última pantalla del archivo (las últimas líneas del archivo que pueden contenerse en una pantalla). ###/patrón/ Busca hacia adelante la ocurrencia de ‘patrón’. • ?patrón? Busca hacia atrás la ocurrencia de ‘patrón’. • h Muestra un resumen abreviado de los comandos internos posibles. • q Finaliza el comando Ejemplo: $ pg -p “Su comando?: “ ---------------------------------- ---------------------------- -------------------------------- ------ Su comando?: q $ 12. Comando ‘head’ Propósito: Muestra determinado número de líneas a partir del inicio del archivo. Sintaxis: /usr/local/bin/head [opciones] archivo(s) Opciones: • x Proporciona las primeras ‘ x ‘ líneas de los archivos especificados. Consideraciones:  Por default imprime siempre las primeras diez líneas. Ejemplo: (El archivo ‘cat21’ contiene las siguientes líneas) Línea No.1 Línea No.2 Línea No.3 Línea No.4 Línea No.5 Línea No.6 Línea No.7 Línea No.8
  • 28. JDCM UNIX SVR4 - NB 23 $ head -4 cat21 Línea No.1 Línea No.2 Línea No.3 Línea No.4 13. Comando ‘tail’ Propósito: Muestra determinado número de líneas o caracteres a partir del final del archivo. Sintaxis: /usr/bin/tail [opciones] archivo(s) Opciones: • +/- número Muestra +número desde el inicio o -número desde el final del archivo. • lbc Cuenta en líneas, bloques o caracteres. Consideraciones:  Por default cuenta en líneas.  El comando “tail” copia el “archivo” indicado a la salida estándard, empezando en el lugar designado.  El comando “tail” sólo mostrará los últimos 4096 bytes de un “archivo” sin importar su número de líneas.  Puede ocurrir un comportamiento extraño con archivos conteniendo caracteres especiales o multibyte.  Por default imprime siempre las últimas diez líneas. Ejemplo: (El archivo ‘cat21’ contiene las siguientes líneas) Línea No.1 $ tail -2 cat21 Línea No.2 Línea No.3 Línea No.3 Línea No.4 Línea No.4 14. Comando ‘diff’ Propósito: Muestra las diferencias entre archivos. Sintaxis: /usr/bin/diff [opciones] archivo1 archivo2 Opciones: • b Ignora los espacios y tabulaciones tras el dato. • e Produce un script conteniendo comandos del editor ‘ ed ‘ para hacer que archivo1 sea idéntico al archivo2. Consideraciones:  Nos informa qué líneas deben cambiarse entre dos archivos de modo que sean idénticos.  La salida normal contiene líneas que semejan la siguiente forma: • n1 a n3,n4 • n1,n2 d n3 • n1,n2 c n3,n4 3. Estas líneas son comandos del editor ‘ ed ‘ para convertir el “archivo1” en “archivo2”.  Los números después de las letras pertenecen al “archivo2”.  Lo que sigue a estas líneas son las líneas afectadas en el “archivo1” etiquetadas con el caracter ‘ ‘ y les siguen las afectadas en el “archivo2” etiquetadas con el caracter ‘ ‘.
  • 29. JDCM UNIX SVR4 - NB 24 Ejemplo: $ cat group1 users:NONE:100:dcr,banco ofis:700:ofis,demo,boss curso:1001:user01,user02,user03 $ cat group2 ofis:700:ofis,demo,boss curso:1001:user01,user02,user03 $ diff group1 group2 1d0 users:NONE:100:dcr,banco $ diff -e group1 group2 1d $ diff group2 group1 0a1 users:NONE:100:dcr,banco $ diff -e group2 group1 0a users:NONE:100:dcr,banco . 15. Comando ‘wc’ Propósito: Contar el número de líneas, palabras y caracteres que posee un archivo. Sintaxis: /usr/bin/wc [opciones] [archivos] Opciones: • l Muestra sólo el número de líneas. • w Muestra sólo el número de palabras. • c Muestra sólo el número de caracteres. Consideraciones: Ejemplo: $wc times 8 52 1325 times 16. Comando ‘grep’ Propósito: Búsqueda de un texto en un archivo. Sintaxis: /usr/bin/grep [opciones] expresión [archivos] Opciones: • c Muestra el número de líneas que concuerda con “expresión” en lugar del patrón mismo. • l Muestra el(los) nombre(s) del(de los) archivo(s) cuyo contenido concuerda con “expresión” (una sola vez). • n Muestra el número de linea en que apare-ce alguna concordancia. • i Trata mayúsculas y minúsculas por igual. • v Muestra las líneas que no concuerdan con “expresión”. • s Suprime los mensajes de error. Consideraciones: Ejemplo: $ grep [Ff]inanciero reporte $ grep [4-9]. reporte $ grep -lc l[0-3] * $ grep ” estado financiero$” reporte $ grep ”^Resultados del campeonato” reporte $ grep ’.pic’ archivo
  • 30. JDCM UNIX SVR4 - NB 25 17. Comando ‘sort’ Propósito: Ordenamiento de líneas de texto xvii Sintaxis: /usr/bin/sort [opciones] [campo.caracter] [archivos] Opciones: • b Ignora blancos al inicio. • f Trata mayúsculas y minúsculas por igual. • n Sort numérico. • r Orden descendente. • o ‘file’ Graba los resultados en “file”. • t ‘carac’ “carac” es un caracter utilizado como separador de campo en el archivo a sortearse. Consideraciones:  Primero, se sortean los espacios en blanco.  Segundo, se sortean los números iniciádose con el primer dígito del número (de 0 a 9).  Tercero, se sortean las letras mayúsculas.  Cuarto, se sortean las letras minúsculas. Ejemplo: $cat archivo $sort archivo $sort -n archivo 4980 12 4 12 4 12 40 40 40 4 4980 636 636 636 4980 8010 8010 8010 $cat archi1 Pedro Martinto:Las Acacias 328:223160 Miguel Pereira:Zona4, Lima:440624 Sandra Villavicencio: Poma de Ayala 1324, Lince: 512345 Sandra Villavicencio: Poma de Ayala 1324, Lince: 512331 Miguel Pereira: Zona 3, Lima:440634 Angel Martinelli:Los Eucaliptos 340: 475866 $sort -t: -b +2 archivo Pedro Martinto:Las Acacias 328:223160 Miguel Pereira:Zona4, Lima:440624 Miguel Pereira: Zona 3, Lima:440634 Angel Martinelli:Los Eucaliptos 340: 475866 Sandra Villavicencio: Poma de Ayala 1324, Lince: 512331 Sandra Villavicencio: Poma de Ayala 1324, Lince: 512345 $sort -t: -b +1 -2 +2n archivo Pedro Martinto:Las Acacias 328:223160 Angel Martinelli:Los Eucaliptos 340: 475866 Sandra Villavicencio: Poma de Ayala 1324, Lince: 512331 Sandra Villavicencio: Poma de Ayala 1324, Lince: 512345 Miguel Pereira: Zona 3, Lima:440634 Miguel Pereira:Zona4, Lima:440624 $sort -t: -b +2.4 -2.6 archivo Miguel Pereira:Zona4, Lima:440624 Sandra Villavicencio: Poma de Ayala 1324, Lince: 512331 Miguel Pereira: Zona 3, Lima:440634 Sandra Villavicencio: Poma de Ayala 1324, Lince: 512345 Pedro Martinto:Las Acacias 328:223160 Angel Martinelli:Los Eucaliptos 340: 475866 18. Comando ‘cut’ Propósito: Seleccionar parte de un texto.
  • 31. JDCM UNIX SVR4 - NB 26 Sintaxis: /usr/bin/cut [opciones] [archivos] Opciones: • c ‘lista’ Designa una ‘lista’ con las posiciones de caracteres a cortar: • c1-40 Corta los primeros 40 caract. • c1-3,7 Corta los 3 primeros y el 7mo. • c20- Corta desde el 20mo. • f ‘lista’ Designa una ‘lista’ de campos a cortar: • f1,4 Corta el 1er y 4to campos. • d ‘carac’ ‘carac’ identifica el caracter actúa como separador de campo. Consideraciones: Ninguna Ejemplo: $ ls -l | cut -c1-8 $cat archi1 $ cut -d’:’ -f2 archi1 Las Acacias 328 Zona4, Lima Poma de Ayala 1324, Lince Poma de Ayala 1324, Lince Zona 3, Lima Los Eucaliptos 340 19. Comando ‘find’ Propósito: Búsqueda de archivos dentro del Sistema UNIX. Sintaxis: /usr/bin/find [trayectoria] [criterio de búsqueda] [acción] Opciones: xviii • atime n Selecciona los archivos que han sido accesados hace ‘n’ dias. • mtime n Selecciona los archivos que han sido modificados hace ‘n’ dias. • name file Selecciona todas las ocurrencias de ‘file’. • print Muestra los archivos encontrados. • user ID Busca los archivos que pertenecen al usuario con identificación ID (número de usuario). Se puede buscar por nombre directamente. • exec cmd {} ; Ejecuta el comando ‘cmd’, y las llaves representan cada archivo a evaluarse. • size n[c] Selecciona los archivos cuya longitud es de ‘n’ bloques. La ‘c’ corresponde a caracteres. Consideraciones:  Desciende recursivamente por la jerarquía de directorios de cada trayectoria incluída en la lista de trayectorias.  No olvidarse de la opción ‘print’ de lo contrario, no se mostrará lo que se busca o no se realizarán las órdenes dadas. Ejemplo: $ find /usr/acct -name “*.0456” -print $ find / -user juan -print $ find -atime +10 -name ‘*.c’ -print -exec rm {} ; $ find ( -mtime 5 -o -name ‘*.c’ ) -print $ find /usr/ng /usr/mp -size -10000c -print B. OTROS COMANDOS
  • 32. JDCM UNIX SVR4 - NB 27 01. Comando ‘date’ Propósito: Mostrar y/o fijar la fecha y hora del sistema. Sintaxis: /usr/bin/date [+formato] /usr/bin/date [mmddHHMMaa] Opciones: Formato (precedido por %): • D Fecha como mm/dd/aa • H Hora (00 - 23) • M Minuto (00 - 59) • S Segundo (00 - 59) • T Tiempo como hh:mm:ss • Y Año en formato de 4 dígitos • d Día del mes (01 - 31) • m Mes del año (01 - 12) • y Año de la centuria (00 - 99) • n Inserta un caracter de nueva línea Para fijar Fecha y Hora: • mm Número de mes • dd Número de día • HH Número de hora (formato de 24 horas) • MM Número de minuto • yy Número de año (últimos 2 dígitos y es opcional) Consideraciones:  Si no se da un argumento, se muestra la fecha y hora actuales  Si el argumento empieza con el signo más ( + ), la salida del comando está bajo control del usuario.  Todas las salidas son de tamaño fijo.  Cada descriptor de campo se precede con el signo porcentaje ( % ) y es reemplazado (el descriptor) en la salida por su correspondiente valor. Ejemplo: $ date Wed May 27 18:12:56 EDT 1989 $ date ‘+FECHA:%m/%d/%y%nHORA:%H:%M:%S’ FECHA:08/01/91 HORA:14:05:09 02. Comando ‘cal’ Propósito: Calendario electrónico. Sintaxis: /usr/bin/cal [mes] { año } Opciones: • mes Dato numérico entre 1 (enero) y 12 (diciembre). • año Dato numérico entre 1 y 9999. Consideraciones:  Los años no deben abreviarse.
  • 33. JDCM UNIX SVR4 - NB 28  Se imprime el calendario del mes y/o año especificado. Ejemplo: $ cal 1 1988 (Muestra el calendario del mes de enero del año 1,988) 03. Comando ‘calendar’ Propósito: Recordatorio de eventos. Sintaxis: /usr/bin/calendar Opciones: Ninguna Consideraciones:  Crear un archivo llamado “calendar” (en su directorio de trabajo). Este comando consulta este archivo en el directorio de trabajo e imprime todas las líneas que contienen las fechas de “hoy” y “mañana”.  Cada línea debe contener una fecha en el formato mes - día.  Si ejecuta el programa un viernes, aparecen los eventos del viernes, sábado, domingo y lunes.  Formatos de fechas: October 10, Oct 10, 10/10. 04. Comando ‘banner’ Propósito: Genera posters. Sintaxis: /usr/bin/banner { argumentos } Opciones: Ninguna. Consideraciones:  Los argumentos deben tener un máximo de 10 caracteres. Se imprime con letras grandes en la salida estándard (usando el caracter ‘ # ‘).  Los caracteres en exceso se ignoran. Ejemplo: $ banner UNIX # # # # ### # # # # ## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ## # # # #### # # ### # # 05. Comando ‘split’ Propósito: Separo archivos grandes en pequeños.
  • 34. JDCM UNIX SVR4 - NB 29 Sintaxis: /usr/bin/split [opciones] archivo_fuente nombre_destino Opciones: • n Cantidad de líneas por las que separa el archivo (lo normal es 1000 líneas). Consideraciones:  El “archivo_fuente” se separa en archivos pequeños cuyos nombres empiezan con “nombre_destino”.  A estos pequeños archivos se les adiciona al nombre ‘ aa ‘ y así sucesivamente (en forma lexicográfica), hasta la ‘ zz ‘.  Se puede tener un máximo de 676 archivos pequeños a partir de uno grande.  El “nombre_destino” no debe sobrepasar los 12 caracteres.  Si no se especifica el “nombre_destino”, se utiliza la letra ‘ x ‘. Ejemplo: $ split -10 status chunk $ ls chunkaa chunkab chunckac C. IMPRESION DE ARCHIVOS - PARTE I 01. Comando ‘lp’ Propósito: Envía un listado al spooler. Sintaxis: /usr/bin/lp [opciones] Opciones: • d ‘printer’ Identifica una impresora. • n x Imprime ‘x’ copias del listado. • s Suprime mensajes (fecha, banner, etc.). • t ‘título’ Imprime ‘título’ como título del listado. • w Envía un mensaje al usuario cuando ha terminado la impresión. Si el usuario no está logeado, se envía un correo. Consideraciones:  Los archivos se imprimen en el orden en que aparecen en la línea de comando.  El comando ‘lp’ asocia una única identificación con cada requerimiento y lo imprime en la salida estándard. Ejemplo: $ lp -dserial1 /usr/acct/pruebas/file1 $ lp -dlaser3 -n3 /usr/file3 $ lp -s -w /work/acct/administ/master.c 02. Comando ‘lpstat’ Propósito: Muestra el estado general del spooler.
  • 35. JDCM UNIX SVR4 - NB 30 Sintaxis: /usr/bin/lpstat [opciones] Opciones: • d Muestra el destino default del sistema. • s Muestra un estado resumido del sistema spooler. • t Muestra toda la información del estado de todas las impresoras y del sistema spooler. Consideraciones:  Las opciones pueden aparecer en cualquier orden.  Si no se dan opciones, el comando ‘lpstat’ imprime el estado de todos los requerimientos hechos a la impresora principal (default). Ejemplo: $ lpstat -t scheduler is running system default destination: printer device for printer: /dev/tty106 printer accepting requests since Mon Feb 4 15:37:10 1991 printer printer is idle. enabled since Wed Apr 3 11:01:59 1991. available 03. Comando ‘cancel’ Propósito: Cancela un trabajo de impresión. Sintaxis: /usr/bin/cancel [identificación de trabajo spool] impresora Opciones: Ninguna Consideraciones:  La identificación del listado así como el nombre de las impresoras se obtiene con el comando “lpstat”.  Al especificar una “identificación de trabajo spool”, se cancela el trabajo asociado aún cuando esté en impresión.  Al especificar una “impresora” se cancela el trabajo que se está imprimiendo en esa impre-sora.  En cualquier caso, la cancelación de un trabajo en ejecución libera la impresora para imprimir el siguiente trabajo (a menos que se haya especificado una impresora en cuyo caso, ningún otro trabajo será impreso hasta que se habilite la misma). Ejemplo: $ lp nombres request id is pr1-398 $ cancel pr1-398 request “pr1-398” cancelled D. MANEJO DE ACCESOS 01. CONSIDERACIONES EN LOS PASSWORD  Todos los login ID deben tener asignado un password en el archivo ‘/etc/passwd’.  Posibles excepciones son login ID simples o de un solo propósito como “who”.
  • 36. JDCM UNIX SVR4 - NB 31  Si existe un login ID pero no se requiere activarlo, puede protegerse editando el campo de password correspondiente y colocando cualquier texto en él incluyendo espacios en blanco y asteriscos.  El password debe tener por lo menos 6 caracteres aunque sólo los ocho primeros son significativos.  Debe consistir de por lo menos dos caracteres alfanuméricos y por lo menos uno numérico o caracter especial (mayúsculas o minúsculas).  Debe ser diferente del login ID incluyendo formas inversas o circulares.  El nuevo password debe diferenciarse del nuevo en por lo menos tres caracteres. 02. FACTORES PARA VIGENCIA DEL PASSWORD  Editar el campo de password en el archivo ‘/etc/passwd’.  Adicionar los valores de vigencia en el formato “,xy” donde: • x Número máximo de semanas antes de requerir un cambio. • y Número mínimo de semanas antes de permitir un cambio. Ejemplo: juan:gZZ6x3kTw9p49,42:130:100:J.P.:/usr/acct/juan:/bin/sh esto es, no podrá cambiar su password en por lo menos 2 semanas y debe cambiarlo luego de 4 semanas. a) ARCHIVO ‘/etc/passwd’ (1) PROPOSITO  Es el archivo de control maestro que determina el acceso al Sistema Operativo UNIX.  Es muy importante para la seguridad del sistema que sólo el administrador del mismo sea el que modifique este archivo. (2) DESCRIPCION  Existen siete campos (separados por “:”) que forman un registro por cada usuario identificado en el sistema y son, en orden: • login Nombre de login, un máximo de 8 caracteres y en minúsculas. • password Un máximo de 18 caracteres de los cuales los 13 primeros se utilizan para el password encriptado (creado por el comando “passwd”), tres caracteres para el período de vigencia de este password y dos caracteres reservados para las rutinas del sistema. • UID Es el número de identificación del usuario, mediante el cual el sistema determina la propiedad y permisos de acceso. Deben empezar desde 100 (los primeros 99 están reservados para la administración del sistema y logins especiales) y no ser mayores de 65,535. • GID Número de identificación del grupo, mediante el cual el sistema determina los permisos de acceso para el grupo. Deben corresponder a las entradas en el archivo “/etc/group”. • comment Hasta un máximo de 30 caracteres, que tradicionalmente se usan para identificar al usuario. • home_dir El nombre completo o absoluto del directorio base del usuario. Debe existir antes que el usuario pueda ingresar al sistema. • shell Es el nombre completo del archivo ejecutable (típicamente un shell interactivo) que se ejecuta al momento que el usuario ingrese al sistema. Ejemplo: usr1:gZZ6x3kTw9p49:130:100:user 1 ID:/usr/usr1:/bin/sh b) ARCHIVO ‘/etc/group’ (1) PROPOSITO  Permite la adición de usuarios a un grupo específico.
  • 37. JDCM UNIX SVR4 - NB 32 (2) CARACTERISTICAS  El nombre de usuario debe existir en el archivo /etc/passwd.  Las entradas en este archivo son de la forma: users::100:suzie,aldo,tomás,user1  Los cuatro campos que lo forman son:  Nombre de grupo.  El password del grupo, normalmente no se utiliza.  GID, número que identifica el grupo.  Lista de miembros del grupo (separados por comas). c) ARCHIVO ‘/etc/profile’ (1) PROPOSITO  Fija las variables ambientales de todo el sistema. (2) CARACTERISTICAS  Es leído por el shell Burne.  Muestra el mensaje del día.  Notifica al usuario si tiene correo.  Permite fijar las características estándares del terminal.  Fija el valor “umask”.  Permite ver las variables ambientales mediante los comandos “set” y “env”.  El comando interno “env” muestra las variables que se exportan hacia ó por el shell.  El comando interno “set” muestra todas las variables del sistema. 03. Comando ‘passwd’ Propósito: Cambiar la palabra clave del usuario (password). Sintaxis: /usr/bin/passwd [-sdf] { login_de_usuario } Opciones: • s Para mostrar los atributos de password para el login_de_usuario. • d Borra el password del login_de_usuario. • f Fuerza el cambio de password en el siguiente acceso al sistema. Mensajes: • Old password: • New password: • Re-type new password: Consideraciones:  Los password se almacenan en el archivo ‘/etc/shadow’.:  Debe ser diferente del login en por lo menos 3 caracteres..  Por razones de seguridad, el sistema UNIX no muestra este nombre en pantalla.  Sólo los super-usuarios pueden cambiar cualquier password.  Un super-usuario puede crear un password nulo con sólo presionar CR en respuesta al requerimiento por nuevo password.  El formato de salida es el siguiente: login estado mm/dd/aa min max aviso Donde: • login Login del usuario.
  • 38. JDCM UNIX SVR4 - NB 33 • estado PS: con password LK: bloqueado NP: sin password • mm/dd/aa Fecha de último cambio. • min Mínimo número de días entre cambios de password. • max Máximo número de días en que el password es válido. • aviso Días de aviso antes que el password expire. Ejemplo: $ passwd ernesto old password: new password: re-type new password: # passwd carlos new password: re-type new password:
  • 40. JDCM UNIX SVR4 - NB 35 04. Comando ‘chown’ Propósito: Modificar la propiedad de un archivo o directorio. Sintaxis: /usr/bin/chown [-R] { destino } Opciones: • R Desciende por la estructura del directorio y efectúa el cambio indicado en forma recursiva. Consideraciones:  El usuario debe tener acceso a su directorio base y puede mantener su propio ambiente de trabajo. Ejemplo: Cambiamos la propiedad: # chown memo /usr/acct/memo 05. Comando ‘id’ Propósito: Muestra los nombres e identificaciones de usuario y grupo. Sintaxis: /usr/bin/id [-a] Opciones: • a Reporta todos los grupos a los que pertenece el usuario. Consideraciones:  La información se toma del archivo ‘/etc/passwd’ Ejemplo: $ id uid = 101(user1) gid = 100(grp100) $ id -a uid = 101(user1) gid = 100(grp100) groups = 100(grp100). 300(grp300) 06. Comando ‘groups’ Propósito: Muestra a qué grupos pertenecen los usuarios. Sintaxis: /usr/bin/groups Opciones: Ninguna Consideraciones:  La primera salida pertenece al grupo primario identificado en el archivo ‘/etc/passwd’.  Las otras entradas muestran a qué otros grupos se pertenece, según el archivo ‘/etc/group’. Ejemplo: $ groups grp100 grp100
  • 41. JDCM UNIX SVR4 - NB 36 $ groups user2 grp100 grp200 $ groups user2 user3 user2: grp100 grp200 user3: grp100 grp300 07. Comando ‘chgrp’ Propósito: Modificar el grupo de trabajo. Sintaxis: /usr/bin/chgrp [-R] { destino } Opciones: • R Desciende por la estructura del directorio y efectúa el cambio indicado en forma recursiva. Consideraciones:  El directorio base debe estar asociado con el grupo del usuario.  Un usuario puede pertenecer a varios grupos para lo cual debe estar listado como miembro en cada grupo en el archivo ‘/etc/group’ sin embargo, la identificación de grupo asociado con los archivos permanece como el grupo primario. Ejemplo: Verificamos la asociación del grupo: # chgrp users /usr/acct/memo 08. Comando ‘newgrp’ Propósito: Cambia la asociación de grupo a un usuario. Sintaxis: /usr/bin/newgrp [-] { grupos } Opciones: • - Se reinicia la secuencia de logeado permitiendo al usuario pertenecer al nuevo grupo. Consideraciones:  El usuario debe pertenecer al nuevo grupo. Los archivos y directorios creados luego que se efectúan los cambios reflejan la nueva pertenencia.  Sin argumentos, se regresa al grupo primario. Ejemplo: $ groups other root bin sys adm mail tty lp daemon uucp $ id uid=0(root) gid=1(other) $ pp $ ls -l -rw-r—r-- 1 root other 0 Dec 10 17:21 pp $ newgrp bin $ pp1 $ ls -l -rw-r—r-- 1 root other 0 Dec 10 17:21 pp -rw-r—r-- 1 root bin 0 Dec 10 17:21 pp1 09. MANEJO DE LOS PERMISOS DE ACCESO  El Sistema Operativo UNIX controla el ingreso al sistema utilizando nombres de usuario (login) y palabras clave (password) que guarda en archivos especiales.
  • 42. JDCM UNIX SVR4 - NB 37  Tales archivos, junto con los permisos para los directorios, son utilizados para controlar quién puede utilizar un determinado archivo o directo-rio.  Existen tres tipos de usuarios: • propietario Aquel que creó el archivo o directorio. • grupo El propietario pertenece a este grupo luego todo el grupo tiene acceso a este archivo o directorio pero con restricciones (si las hubiera). • otros Cualquier otro usuario.  Existen tres tipos de acceso: • lectura Controla quién puede mirar el contenido de un archivo. • escritura Controla quién puede modificar el contenido de un archivo o directorio. • ejecución Controla quién puede ejecutar un programa. 10. Comando ‘chmod’ Propósito: Modificar los atributos de un archivo. Sintaxis: /usr/bin/chmod modo archivo(s) Opciones: • modo Representa un número octal que sirve para la modificación de los atributos del archivo. Consideraciones:  Se debe ser propietario del archivo o el administrador del sistema para ejecutar este comando.  Notación: Octal Permisos Usuario Grupo Otros lectura 400 040 004 escritura 200 020 002 ejecución 100 010 001 2. Notación: Simbólica Permisos Acción Tipo u (usuario) + r g (grupo) - w o (otros) = x a (todos) Ejemplos: $ chmod 755 archivo1 Brinda permiso de lectura, escritura y ejecución para el propietario, permiso de lectura y ejecución al grupo y otros. $ chmod 700 archivo2 Brinda permiso de lectura, escritura y ejecución para el propietario pero ningún permiso al grupo u otros. $ ls -ld budget drwxr-xr-x 2 user1 grp100 512 Jun 4 15:04 budget $ chmod go -x budget $ ls -ld budget drwxr—r-- 2 user1 grp100 512 Jun 4 15:04 budget
  • 43. JDCM UNIX SVR4 - NB 38 COMUNICACIONES A. COMUNICACIONES EN EL AMBIENTE UNIX 01. INTRODUCCION  Las redes juegan un rol importante en la era informática actual. La necesidad de compartir información y recursos hace de las redes una necesidad y puesto que el ambiente computacional está en constante desarrollo, también ellas se desarrollan.  Debido a su simplicidad y a su disponibilidad en la comunidad educativa e investigadora, el sistema UNIX ha sido el favorito para el desarrollo de redes desde mediados de los ‘70.  De aquí nace el UUCP.  UUCP es un conjunto de programas que permiten transferencia de archivos, ejecución remota, mantenimiento y administración en una red UNIX.  UUCP ha sido siempre popular debido a que es de bajo costo.  Es eficiente en términos de dispositivos periféricos, ciclos de procesamiento, experiencia administrativa.  Es un sistema de redes genérico.  La comunicación electrónica UNIX le permite:  Enviar y recibir correo.  Transmitir mensajes rápidos, y hasta mantener “conversaciones” entre dos usuarios.  Mostrar el calendario de un año (o mes) específico.  Mostrar un recordatorio diario. 02. ARCHIVOS PARA MENSAJES BASICOS ARCHIVO /etc/issue  Proporciona un mensaje de bienvenida.  Es un mensaje que se muestra previo al login.  Consta de cualquier texto que se requiera mostrar (incluyendo atributos de pantalla). ARCHIVO /etc/motd  Muestra un mensaje general a los usuarios.  Se muestra cada vez que un usuario ingresa al sistema.  Consta de cualquier textoque se desee mostrar (incluyendo atributos de pantalla). 03. Comando ‘tty’ Propósito: Mostrar el nombre completo del terminal donde se ejecuta este comando. Sintaxis: /etc/tty [-l] [-s] Opciones: • l Imprime el número de la línea sincrónica a la cual está conectado el terminal (si se encuentra en una línea sincrónica). • s Inhibe la respuesta de este comando permitiendo chequear sólo el “código de salida”. Consideraciones: Los “códigos de salida” son: • 0 Si la entrada estándard es un terminal. • 1 Cualquier otra cosa.
  • 44. JDCM UNIX SVR4 - NB 39 • 2 Si se especifican opciones inválidas.  Originalmente su nombre era un acrónimo de “teletypewriter” (teleimpresora) pero ahora viene a significar cualquier dispositivo terminal. Ejemplo: $ tty /dev/tty100 04. Comando ‘stty’ Propósito: Fija las opciones de entrada y/o salida del terminal. Sintaxis: /bin/stty [-a] opciones/argumentos Opciones: • a Muestra todas las opciones. • parenb(-parenb) Habilita (deshabilita) la generación y detección de paridad. • cs8 Selecciona el tamaño del caracter. • 1200 2400 4800 9600 Fija la velocidad en baudios del terminal al valor dado. • caracteres_de_control valor Fija el “caracter_de_control” al “valor”. Si “valor” está precedido por un ‘ ^ ‘ (previa secuencia de ESCAPE), entonces su valor es el correspondiente caracter ‘CTRL’. Consideraciones:  Sin argumentos, reporta los valores de algunas opciones.  Si un caracter está precedido por un ( ^ ), entonces el valor de esa opción es el caracter CTRL correspondiente i.e.: ^h es CTRL h. Ejemplo: $ stty kill ^c $ stty (APARECEN ALGUNOS VALORES DE ALGUNAS OPCIONES) 05. Comando ‘news’ Propósito: Mostrar noticias del sistema. Sintaxis: /bin/news [-ans] Opciones: • a Muestra todas las noticias sin importar la actualidad de las mismas. • n Muestra sólo los nombres de los archivos de noticias recientes. • s Muestra el número actual de noticias. Consideraciones:  Las noticias se basan en la actualidad (fecha de modificación del archivo ‘.news_time’ en el directorio base, y sólo se muestran los más recientes comparados con la fecha de este archivo).  Sin argumentos se muestran las noticias contenidas en el directorio ‘/var/news’. Ejemplo: $ news -n * item4 item3 item2 item1 $ news -s
  • 45. JDCM UNIX SVR4 - NB 40 4 new items $ news item3 ---------------------- ------ ------ ---- ----- ---- ------- -- --- ---- ------ -- -------- ---- ------- -------- ---- --. 06. Comando ‘mesg’ Propósito: Permitir o negar el ingreso de mensajes. Sintaxis: /bin/mesg [-n] [-y] Opciones: • n Previene que los usuarios le envíen mensajes. • y Permite que se le envíen mensajes. Consideraciones:  No bloquea los mensajes enviados por el super-usuario mediante el comando ‘wall’.  Solamente bloquea los usuarios ordinarios (incluso utilizando ‘wall’).  El comando sin opciones reporta el estado actual sin modificarlo. Ejemplo: $ mesg-n 07. Comando ‘who’ Propósito: Determinar quién ha ingresado al sistema. Sintaxis: /usr/bin/who [-uqH] /usr/bin/who am i Opciones: • u Información completa de usuarios activos en el sistema. • q Número de usuarios activos (y sus nombres). • H Precede la salida con una cabecera. • s Muestra sólo el nombre, terminal/línea usado(a), tiempo. Es la salida por defecto. Consideraciones:  La información mostrada por este comando se obtiene del archivo ‘/etc/utmp’ en el momento de accesar al sistema.  Usualmente se obtiene la información requerida a partir del archivo ‘/etc/wtmp’ el cual contiene una historia de todos los ingresos al sistema desde que este archivo fué creado.  El formato general de salida es: nombre línea tiempo libre PID coment donde: • nombre Es el nombre del login del usuario. • línea Nombre de la línea conforme se encuentra en el directorio ‘/dev’. • tiempo Hora en que el usuario ingresó al sistema. • libre Horas y minutos desde la última actividad de esa línea en particular. Un punto ( . ) indica que ha habido actividad en el terminal en el último minuto. Una línea sin actividad por más de 24 horas es marcada como ‘old’.
  • 46. JDCM UNIX SVR4 - NB 41 • PID Identificación del proceso del shell del usuario. • coment Comentario asociado con esta línea tal y como se encuentra en el archivo de configuración ‘/etc/inittab’. Ejemplo: $ who -Hu NAME LINE TIME IDLE PID COMMENT user1 tty04 Jan 26 13:11 . 8875 usert8 tty101 Jan 26 10:48 . 123 08. Comando ‘finger’ Propósito: Muestra información sobre usuarios logeados, remotos y locales. Sintaxis: /bin/finger [-fqlb] Opciones: • f Suprime la línea e cabecera. • q Muestra sólo el nombre, terminal, y tiempo de ingreso al sistema. • l Muestra la salida en forma detallada. • b Suprime el directorio base y el shell de la presentación. Consideraciones:  Incluye información de usuario como el nombre de login, su descripción (tomada del archivo ‘/etc/passwd’), nombre de terminal, tiempo sin uso, hora en que ingresó al sistema, y ubicación (si es conocida).  Un ‘ * ‘ al inicio del nombre de terminal indica que no permite recibir mensajes. Ejemplo: $finger Login Name TTY Idle When Where wjnr Bill Radognmia *console 1.17 Thu 08:10 root 0000-Admin *term/15 1 Thu 08:11 italy root 0000-Admin term/10 20 Fri 10:19 $ finger -f wjnr Bill Radognmia *console 1.17 Thu 08:10 root 0000-Admin *term/15 1 Thu 08:11 italy root 0000-Admin term/10 20 Fri 10:19 $ finger -q Login TTY When wjnr *console Thu 08:10 root *term/15 Thu 08:11 root term/10 Fri 10:19 $ finger -l Login name: userb (messages off) In real life: bourne shell Directory: /home/userb Shell: /sbin/sh On since Oct 8 08:47:08 on term/18 09. Comando ‘write’ Propósito: Escribir a otro usuario, enviar mensajes. Sintaxis: /bin/write usuario [línea]
  • 47. JDCM UNIX SVR4 - NB 42 Opciones: • usuario Usuario logeado en el sistema. • línea Se utiliza para indicar a qué terminal se desea escribir (asumiendo que un usuario está logeado más de una vez en el sistema i.e., está utilizando varios terminales). Consideraciones:  El comando ‘ write ‘ copia las líneas que digita en su terminal en el de otro usuario.  Cuando se invoca por primera vez, envía el mensaje: Message from usuario (tty?) [date] .. a la persona con la que se desea comunicar.  En este punto, se permite responder al que recibe el mensaje.  La comunicación continúa hasta que se envíe una interrupción.  Si se envía un mensaje a un usuario logeado más de una vez y sin la opción ‘ línea ‘, aparece el siguiente mensaje: User is logged on more than one place. You are connected to “terminal”. Other locations are: terminal  El primer “terminal” del mensaje anterior se refiere al terminal en que primero ingresó el usuario con el que se desea contactar.  Conversaciones bidireccionales: Se debe tener alguna forma de indicar al otro lado de la línea cuándo es su turno de comunicarse y cuándo se acaba la conversación. Ejemplo: $ write leo Oye Leopoldo, te invito una rubia. CTRL d $ write leo Oye Leopoldo, ahora?.. o Mensaje de `leo` Acepto, pero la hora?... o A las 3 pm, te parece? o Bien, chau oo EOF CTRL d Mensaje de `pedro` Oye Leopoldo, ahora?.. o $ write pedro Acepto, pero la hora ?... o A las 3 pm te parece? o Bien, chau oo CTRL d $ 10. Comando ‘wall’ Propósito: Escribir a todos los usuarios a la vez. Sintaxis: /etc/wall Opciones: Ninguna Consideraciones:  Este comando lee la entrada estándard hasta que encuentre un fin de archivo y lo toma como el mensaje a enviar.  Envía este mensaje a todos los usuarios actualmente logeados y lo precede por: Broadcast message from: ....
  • 48. JDCM UNIX SVR4 - NB 43 Ejemplo: $ wall Atención.! Debido a fallas en la impresora principal, sírvanse enviar sus trabajos a la impresora secundaria. CTRL d 11. Comando ‘mailx’ Propósito: Herramienta interactiva para el envío o recepción de correo electrónico. Sintaxis: /usr/bin/mailx [-s cabecera] { usuarios } ENVIO /usr/bin/mailx [-f archivo][-HN] RECEPCION Opciones: • s ‘cabecera’ Asigna una “cabecera” al correo. • f ‘archivo’ Lee los mensajes desde un ‘archivo’ alterno. • H Imprime sólo el resumen de cabecera. • N No imprime la cabecera inicial. Consideraciones:  El correo que llega se almacena en un archivo estandard para cada usuario en el directorio ‘/var/mail’.  Cada mensaje que se lee se marca y mueve a un archivo secundario denominado ‘mbox’ en el directorio base.  Al leerse el correo, “mailx” se encuentra en ‘modo comando’.  La cabecera o asunto a tratar no debe sobrepasar los 1024 caracteres.  A cada mensaje se le asigna un número secuencial, y siempre se sabe que existe un mensaje.  Ingrese un mensaje y presione CR al término de cada línea.  Envíe el mensaje presionando CTRL-d o ~ al inicio de una línea y sólo esta secuencia o caracter.  Las letras ‘ N ‘ (nuevo) y ‘ U ‘ (no leído) designan el estado de cada mensaje, seguido de una información descriptiva que muestra el nombre del que envía el mensaje así como la fecha y hora en que se envió, su longitud en líneas y caracteres, y el asunto del mismo. Comandos Internos: • ? Muestra una lista de posibles comandos ‘ ~ ‘. • ~!cmd Ejecuta el comando especificado por cmd. • ~h Requiere: asunto, a, copias. • ~q Termina salvando el mensaje en el archivo ‘dead.letter’ del directorio de trabajo. Es una interrupción (exit). • ~rfile Lee un archivo insertándolo en su mensaje. • d Borra los mensajes del mailbox. • ~x Sale del mailbox sin modificar el mismo i.e., el mensaje no se salva. • ~. Salida estándar: envía el mensaje y termina el comando.
  • 50. JDCM UNIX SVR4 - NB a APENDICES ACCESO A MS-DOS a) Conjunto de Comandos ‘DOS’: • doscat Muestra uno o más archivos en formato DOS. • doscp Copia archivos entre un disco DOS y un filesystem UNIX/XENIX. • dosdir Lista el contenido de un directorio DOS en ese formato. • dosls Lista el contenido de un directorio DOS en formato UNIX/XENIX. • dosrm Remueve archivos de un directorio o disco DOS. b) Consideraciones:  Los argumentos archivo o directorio en formato DOS tienen la forma: dispositivo:nombre donde: • dispositivo Es el nombre completo del dispositivo que posee formato DOS y, • nombre Es el nombre completo de un archivo o directorio en el dispositivo DOS.  Se usan slashes ( / ) y no backslashes ( ) para la separación de archivos y directorios.  Cuando se copia un archivo a DOS, se trunca el nombre del primero a la longitud estandard del DOS: 8 caracteres. Las extensiones siguen el mismo patrón: más de tres, se truncan. Los caracteres extraños también se remueven. No se pueden utilizar metacaracteres para referenciar directorios DOS.  Por conveniencia, existe un archivo que puede ser configurado por el usuario: /usr/default/msdos en el cual se definen los nombres de dispositivos DOS asociados con los nombres de dispositivos: A=/dev/fd0 C=/dev/hd0d de esta manera, en lugar de especificar el nombre de dispositivo /dev/fd0, utilizamos simplemente la letra “A”. Ejemplo: $ doscat /dev/fd0:/docs/memo.txt $ doscat /tmp/f1 /tmp/f2 /dev/fd0:/src/file.asm $ dosdir /dev/fd0:/src $ doscp /tmp/myfile.txt /dev/fd0:/docs/memo.txt $ dosls /dev/fd0:/src $ dosrm /dev/fd0:/docs/memo.txt $ dosdir A:/src A:/dev $ dosrm a:/docs/memo1.txt BIBLIOGRAFIA UNIX Networking Stephen Kochan Patrick Wood Hayden Books UNIX System Library UNIX System Administration David Fiedler Bruce Hunter Hayden Books UNIX System Library UNIX Shell Programming Stephen Kochan Patrick Wood Hayden Books UNIX System Library Tricks of the UNIX Masters Russell Sage The Waite Group SAMS System V Operating System User’s Guide, ATT
  • 51. JDCM UNIX SVR4 - NB b Notas i El primero de los shell escritos fué el 'Bourne-shell', debido a su creador Steve Bourne. ii Hacia 1977, el número de instalaciones UNIX creció hasta alrededor de 500 de las cuales, 125 estaban en universidades. iii Aquí algunos estudiantes graduados (Bill Joy y Chuck Haley) hicieron buena parte de la versión de Berkeley, diseñando un paquete que se llamó BSD (Berkeley Software Distribution). iv 1977 también marcó el año en que el Sistema UNIX fue portado por primera vez a una máquina diferente a la PDP (i.e., hecho para ejecutar en otra máquina con pocos o ningún cambio), la Interdata 8/32. v Actualmente, la versión XENIX más difundida es la de SCO XENIX (Santa Cruz Operation), la cual tiene como upgrade su versión SCO UNIX. vi La versión UNIX System IV fué utilizada internamente en los Laboratorios Bell pero se consideró un producto de transición que nunca fué soportado. vii A principios de año habían alrededor de 100,000 instalaciones del Sistema UNIX en el mundo, corriendo en máquinas con amplio poder de procesamiento, desde microcomputadoras a mainframes y supercomputadores, y en máquinas de diferentes líneas de productos y de diferentes proveedores. viii El primer esfuerzo organizado para definir un estándard para interface de sistema empezó a principios de los '80 con la formación del '/usr/group Standards Commitee' (como se conocía en ese entonces a UNIFORUM). La finalidad del grupo era la de proponer una especificación para una interface de sistema operativo que pudiera proveer una base con la cual pudieran ser fácilmente portadas un gran número de aplicaciones. Las metas específicas del comité fueron las de remover información específica a máquina e implementación, y utilizar valores simbólicos en lugar de numéricos. Los esfuerzos de este comité produjeron finalmente el '/usr/group Standard', adoptado por los miembros del '/usr/group' en 1984. ix Formada a fines de 1984, X/OPEN consistió originalmente de cinco productores de computadores de Europa que construían sistemas basados en el sistema operativo UNIX. El trabajo de estándares del grupo estaba fuertemente influenciado tanto por el '/usr/group Standard' como por el SVID. La finalidad del grupo es la de invertir negocios, recursos técnicos y de mercadeo en el desarrollo de un ambiente común de aplicación multivendedor basado en estándares internacionales ('de jure') o 'de facto'. La Guía para la Portabilidad incluye algunas áreas que no han sido tocadas por el SVID: comandos y utilitarios para el manejo de información, interfaces con ventanas, bases de datos relacionales, PASCAL y COBOL. x A fines de 1984, los miembros del '/usr/group' adoptaron el '/usr/group Standard', un documento que más tarde se convertiría en la base del Estándar 1003.1 del IEEE -POSIX.1-, el primero de una emergente familia de estándares para sistemas abiertos conocidos como POSIX. Este estándar define la interface entre programas de aplicación portables y el sistema operativo, basado en modelos históricos de sistemas UNIX, y consta de funciones que son frecuentemente implementadas como llamadas al sistema directamente dentro del kernel y funciones de librería. Lo siguiente es un resumen de la familia de estándares POSIX: ### IEEE 1003.1: POSIX.1: System Interface ### IEEE 1003.2: POSIX.2: Shell Tools ### IEEE 1003.3: POSIX.3: Testing Verification ### IEEE 1003.4: POSIX.4: Real Time ### IEEE 1003.5: POSIX.5: ADA Language Bindings ### IEEE 1003.6: POSIX.6: Security Extensions ### IEEE 1003.7: POSIX.7: System Administration ### IEEE 1003.8: POSIX.8: Networking ### IEEE 1003.9: POSIX.9: FORTRAN Language Bindings ### IEEE 1003.10: POSIX.10: Supercomputing ### IEEE 1003.11: POSIX.11: Transaction Processing xi Esta fundación desarrolla especificaciones y productos portables de software que están basados en estándares de la industria y que son seleccionados utilizando un proceso abierto: Request for Technology. La tecnología puede ser recibida de cualquier organización, incluyendo aquellas que no son miembros, y se selecciona basada en el criterio de portabilidad, interoperabilidad y escalabilidad. El sistema operativo de la OSF es el OSF/1 y está basado en el producto AIX Release 3 de IBM el cual, está basado a su vez en el System V Release 2 de ATT. Ha sido actualizado desde ese punto e incluye ahora el soporte al POSIX.1 y el X/OPEN PG3. xii Esta organización advierte a la recientemente creada UNIX Software Organization, separada de ATT, sobre la licencia y requerimientos de desarrollo para sus productos de software. Además, UNIX International ha sido creada para ser una voz clara de los usuarios finales, desarrolladores de aplicaciones y suministradores de sistemas, sobre continuidad de los productos existentes y la importancia del proceso de desarrollo abierto. xiii Caracteres precedidos por ( ^ ) se denominan caracteres de control y se obtienen presionando a la vez las teclas de control CTRL y la tecla deseada. xiv El texto puede consistir de una sola palabra o un conjunto de caracteres. xv Cuando se encuentra una ocurrencia, se muestra el número de la línea que contiene ésta. xvi Se muestra sólo la última línea en la que ocurrió una sustitución. xvii Los campos y caracteres comienzan desde 0. xviii 'n' es un entero decimal que puede expresarse como '+n' (mayor que), '-n' (menor que), o 'n' (exacto).
  • 52. UNIXWARE BÁSICO JDCM NB 1 EJERCICIOS Ejercicios varios 1. Ingrese 'datte' y presione RETURN. Aprecie la salida. 2. Ingrese 'datte' pero no presione RETURN. Corriga el error y presione RETURN. El comando debe ejecutarse satisfactoriamente de lo contrario, repita el proceso. 3. Ingrese 'datte' pero no presione RETURN. Cancele esta línea de comando, ingrésela correctamente y ejecútela nuevamente. 4. Utilize el comando 'date' para mostrar la fecha y hora del sitema en los siguientes formatos: ### mm/dd/yy ### hh:mm:ss ### día del año 5. Utilize el comando 'stty' para mostrar las teclas que borran caracteres. 6. Utize el comando 'cal' para determinar el día de la semana de un nacimiento en este año. 7. ¿Quécomandos se utilizan para terminar una sesión?. 8. Interprete las siguientes designaciones de archivos utilizando los metacaracteres para nombres de archivos: ### *.? ### [Ff]*.rpt ### *ltr[5-9] ### memo? 9. Dada la siguiente relación de nombres de archivos: feb86 feb88 ene12.91 ene19.91 ene26.91 ene5.90 ene89 ene90 ene88 mar88 mar89 memo1 memo10 memo2 memo2.sv Cuál es la salida estándard de aplicar los siguientes rangos de búsqueda?: a) ls * b) ls m[a-df-z]* c) ls ene* d) ls ????? e) ls ene?? feb8? mar?8 f) echo * g) echo *[!0-9] h) echo *.* i) echo *90 j) echo [efm][ae]bmr]* 10. Qué efecto tienen las siguientes secuenias de comandos?: a) rm ??? b) mv progs/* /usr/user01/backup c) rm *.o d) cd;pwd e) cp memo1 .. f) who -Ha | lp g) ls -h 2/tmp/errors | lp h) cat file1 file2 i) ls *[!0] j) cat t* | pg k) rm dir1/dir2 l) rm -r ./dir3 m) echo ??* n) echo ?? * Los siguientes ejercicios debe realizarlos con el editor 'ed'. 11. Muestre el contenido de un archivo de dos maneras: ### Utilizando una dirección completa. ### Método corto. 12. Muestre la línea actual. 13. Muestre la última línea con su número de línea. 14. Muestre un rango de líneas con todos los caracteres no imprimibles. 15. Borre la última línea. 16. Mueva las líneas 3 a 5 de un archivo que Ud. escoga hacia el inicio del mismo. 17. Sustituya una palabra que se repita entre un conjunto de líneas. 18. Muestre la fecha y hora del sistema sin salir del editor.
  • 53. UNIXWARE BÁSICO JDCM NB 2 Los siguientes ejercicios debe realizarlos con el editor 'vi'. 19. Sustituya una palabra que Ud. escoga por otra, en una sola línea . Emplee todas las formas posibles. 20. Configure el editor para que muestre los números de línea. 21. Verifique los usuarios que están trabajando en ese momento, sin salir del editor. 22. Desde una ubicación que Ud. escoga dentro de un archivo que esté editando, inserte otro archivo debajo de la línea 12 de su archivo inicial. 23. Ingrese en su archivo la fecha y hora actuales. Escoga un formato determinado. 24. Marque un texto y mueva 4 líneas a la posición marcada. 25. Marque un texto y mueva 4 palabras antes del cursor tras el último caracter de la vigésima segunda palabra del texto marcado. Ejercicios varios 26. Cree un directorio de nombre 'clase' en su directorio base. 27. Debajo de este directorio cree otros dos. 28. Muestre recursivamente el contenido del directorio 'clase'. 29. Copie un archivo a este directorio, con otro nombre (renombrándolo). 30. Muestre el número de inodos del archivo original y de la copia. 31. Enlace este nuevo archivo con otro nombre en uno de los subdirectorios creados y repita el paso anterior. Note el resultado. 32. Renombre este archivo recientemente creado en el otro directorio y verifique los inodos correspondientes. 33. Muestre por pantalla un archivo. 34. Imprima este archivo. 35. Formatee este archivo para doble espacio e imprímalo. 36. Muestre los permisos para este archivo. 37. Qué comandos son válidos?: rm a!* rm a* cd /etc/bin cp /etc /tmp cp /etc/dir1/file34 /usr/dir1 vi ./*.c cat -x file?.c cat file[0-9][0-9].+ | lp cp abc acb ../tmp cp abc*abc /usr/tmp echo bcdnbcd 38. Cambie los permisos de acceso utilizando la notación octal de modo que el propietario pueda accesar y modificar los archivos, los miembros de grupo sólo puedan ver el archivo, y todos los demás usuarios estén restringidos completamente de accesar estos archivos. 39. Cambie los permisos de acceso utilizando la notación simbólica para remover todos los accesos a los miembros de grupo y todos los demás usuarios (excepto del propietario). 40. Modifique el permiso por defecto para restringir todo acceso a los miembros de grupo y otros usuarios a nuevos archivos y directorios. Pruebe que funcionen. 41. Verifique su nombre de grupo y usuario.¿Cuáles son los miembros de su grupo?. 42. Interprete los siguientes permisos: ### 755 ### a+x ### o= ### u-wx,go-x ### a=r ### 700 ### =r 43. Escriba un comando que muestre los nombres de todos los archivos de directorio /etc y que terminen en mount. 44. Cree un script (archivo de comando) que muestre la fecha, hora y su directorio de trabajo. Hágalo ejecutable. 45. Cree un script que muestre el número de usuarios en su sistema en el formato: El número de usuarios es n. 46. Escriba un comando grep que busque en el archivo /etc/passwd los usuarios que pertenezcan al grupo 101. 47. Sortee el archivo /etc/passwd por el group-id.
  • 54. UNIXWARE BÁSICO JDCM NB 1 PREGUNTAS DE EXAMEN Para todos los problemas/ejercicios siguientes, donde convenga o exista más de una alternativa de solución, asuma lo que crea conveniente y detalle en base a qué toma su decisión. 1.- Seleccionar todos los archivos cuyos nombres contengan por lo menos tres letras mayúsculas en posiciones consecutivas y por lo menos un caracter antes de dos números en posiciones consecutivas. 2.- Dentro del editor ‘ vi ‘, deseamos cambiar el directorio de trabajo y queremos verificar que lo haya hecho. 3.- Periódicamente deseamos obtener el listado completo de ciertos archivos. Indicar dos formas de obtener esto y seleccionar la más eficiente. 4.- Se requiere un listado alfabético columnado de ciertos archivos que se encuentren en directorios diferentes y de los cuales se requiere información de su tipo de archivo. 5.- La información del problema anterior debe ser enviada a otro usuario del sistema. Se requiere emplear el comando ‘ mailx ‘. 6.- Ningún usuario puede ingresar al sistema sin tener un user_id. Se requiere conocer quién está trabajando en la línea de comunicación ‘tty108’. 7.- Dentro del editor ‘ed’ necesitamos reemplazar todos los caracteres “ A “ por “ Z “, de las líneas 25 a la 36 de un texto que contiene 40 líneas. 8.- Dentro del editor ‘vi’ necesitamos marcar un texto (párrafo). 9.- Dentro del editor ‘vi’ necesitamos marcar parte del texto total y luego guardarlo temporalmente. 10.- Deseamos identificar el terminal que actualmente utilizamos. Emplear 2 maneras. 11.- Debemos recuperar el texto que acabamos de borrar y moverlo hacia la posición inicial (de línea, de texto). Asuma que el texto termina en CR. 12.- Seleccione parte de un texto y haga lo mismo que en el problema anterior. 13.- Ingrese los caracteres del teclado en un archivo, utilizando los comandos: a) cat b) ed c) vi 14.- Copie los archivos de un directorio /abc (conteniendo a su vez 2 sub-directorios ./bcd y ./cde al directorio /tmp. 15.- Cómo encontraría todos los archivos texto del directorio /etc?. 16.- Cómo imprimiría en la impresora printer las 5 primeras líneas de los archivos encontrados en el problema anterior?. 17.- Cómo imprimiría en la impresora anterior la 2 últimas líneas del archivo /etc/profile?.
  • 55. UNIXWARE INTERMEDIO JDCM UNIX SVR4 - NI i TABLA DE CONTENIDO ILUSTRACIONES: Pág Figura No. 1: Integración del Sistema Operativo UNIX 1 Figura No. 2: Resumen Arquitectónico del Sistema Operativo UNIX 1 Figura No. 3: Jerarquía del Sistema Operativo UNIX 2 FIgura No. 4: Funcionamiento del shell 3 PARTES CONSTITUTIVAS: Pág MAS BASES DEL SISTEMA OPERATIVO UNIX 1 COMUNICACIONES 6 BASES DE LA ADMINISTRACION UNIX 11 EL SHELL 22 APENDICES a CONTENIDO: Pág TABLA DE CONTENIDO ______________________________________________________________________ i Comandos de Referencia en Línea...............................................................................................................................ii MAS BASES DEL SISTEMA OPERATIVO UNIX 1 A. ESTRUCTURA DEL SISTEMA UNIX - REPASO_________________________________________________1 01. CARACTERISTICAS UNIX ................................................................................................................................ 1 02. COMPOSICION DEL SISTEMA OPERATIVO UNIX...................................................................................... 1 03. DESCRIPCION DE DIRECTORIOS IMPORTANTES...................................................................................... 2 B. ACCESO AL SISTEMA UNIX - REPASO _______________________________________________________2 01. QUE ES NECESARIO?......................................................................................................................................... 2 02. CONVENCIONES GENERALES ........................................................................................................................ 3 C. LINEAS DE COMANDO - REPASO ___________________________________________________________3 01. COMO EJECUTA EL SISTEMA UNIX UN COMANDO ................................................................................. 3 D. EDITORES DE TEXTOS_____________________________________________________________________3 01. EDITOR 'vi' - Parte II............................................................................................................................................. 3 COMUNICACIONES 6 A. COMUNICACION CON OTROS SISTEMAS UNIX _______________________________________________6 01. INTRODUCCION.................................................................................................................................................. 6 02. CARACTERISTICAS............................................................................................................................................ 6 03. DESCRIPCION GENERAL.................................................................................................................................. 6 04. Comando 'uname'.................................................................................................................................................... 7 05. Comando 'uuname'.................................................................................................................................................. 7 06. Comando 'uucp'....................................................................................................................................................... 8 07. Comando 'uuto' ....................................................................................................................................................... 8 08. Comando 'uupick' ................................................................................................................................................... 8 09. Comando 'uustat'..................................................................................................................................................... 9 10. Comando 'cu'........................................................................................................................................................... 9 11. Comando 'uux' ...................................................................................................................................................... 10 BASES DE LA ADMINISTRACION UNIX 11 A. COMANDOS PARA OPERACIONES DE RESPALDO____________________________________________11 01. DEFINICIONES DE ARCHIVAMIENTO Y BACKUP ................................................................................... 11 02. Comando 'tar' ........................................................................................................................................................ 11
  • 56. JDCM UNIX SVR4 - NI ii 03. Comand 'cpio'........................................................................................................................................................ 12 04. Comando 'dd' ........................................................................................................................................................ 12 B. IMPRESION DE ARCHIVOS - PARTE II ______________________________________________________13 01. Comando 'disable'................................................................................................................................................. 13 02. Comando 'enable'.................................................................................................................................................. 13 03. Comando 'accept'.................................................................................................................................................. 13 04. Comando 'reject' ................................................................................................................................................... 14 05. Comando 'lpmove' ................................................................................................................................................ 14 06. Comando 'lpsched' ................................................................................................................................................ 14 07. Comando 'lpshut'................................................................................................................................................... 14 C. FACILIDADES ADMINISTRATIVAS _________________________________________________________15 01. Comando 'ln' ......................................................................................................................................................... 15 02. Comando 'od' ........................................................................................................................................................ 15 03. Comando 'umask'.................................................................................................................................................. 16 04. Comando 'ps'......................................................................................................................................................... 16 05. Comando 'kill' ....................................................................................................................................................... 17 06. Comando 'nice'...................................................................................................................................................... 17 07. Comando 'nohup' .................................................................................................................................................. 17 08. Comando 'cron' ..................................................................................................................................................... 18 09. Comando 'crontab' ................................................................................................................................................ 18 10. Comando 'at'.......................................................................................................................................................... 19 11. Comando 'atq'........................................................................................................................................................ 20 12. Comando 'atrm' ..................................................................................................................................................... 20 13. Comando 'batch'.................................................................................................................................................... 21 EL SHELL 22 A. EL SHELL INTERACTIVO__________________________________________________________________22 B. EL AMBIENTE SHELL_____________________________________________________________________22 01. QUE SUCEDE CUANDO SE HACE LOGIN?.................................................................................................. 22 02. QUE HACE EL '/etc/profile'? .............................................................................................................................. 22 03. QUE HACE EL './profile'?................................................................................................................................... 23 04. PROCEDIMIENTOS SHELL.............................................................................................................................. 23 05. REDIRECCION DE ENTRADA/SALIDA ........................................................................................................ 25 06. COMANDOS EN SECUENCIA ......................................................................................................................... 25 07. VARIABLES PROPIAS DEL SHELL ............................................................................................................... 26 08. CONSTRUCCIONES ADICIONALES.............................................................................................................. 26 09. SINTAXIS ............................................................................................................................................................ 26 APENDICES a BIBLIOGRAFIA______________________________________________________________________________a Notas _______________________________________________________________________________________a Comandos de Referencia en Línea  Los siguientes comandos UNIX le brindan acceso en línea a la información del manual de referencia: ### MAN Accesa a las entradas del manual de referencia en el sistema. ### MANDEX Accesa a un sistema indexado manejado por menú con el fin de buscar los manuales en línea seleccionados para un determinado asunto o comando.  Utilícelos siempre!
  • 57. UNIXWARE INTERMEDIO JDCM UNIX SVR4 - NI 1 MAS BASES DEL SISTEMA OPERATIVO UNIX A. ESTRUCTURA DEL SISTEMA UNIX - REPASO 01. CARACTERISTICAS UNIX  Provee un medio computacional simple, eficiente, flexible el cual ofrece las siguientes ventajas:  Sistema de propósito general.  Provee un ambiente interactivo.  Es un ambiente multi-usuario.  Es un ambiente multi-tarea.  Es portable.  Posee herramientas poderosas para desarrollo.  El UNIX SVR4 unifica las versiones importantes de UNIX (BSD, SunOS, XENIX, ATT) en un producto robusto que sigue los estándares de la industria. XENIX UNIXSVR4 SunOS 4.3BSD UNIX SVR3 Figura No. 2: Integración del Sistema Operativo UNIX 02. COMPOSICION DEL SISTEMA OPERATIVO UNIX Manipulación de archivos Utilidades Matemáticas Utilidades para manejar impresoras Redes y Comunicaciones Herramientas para Desarrollo de Software Procesamiento de Textos (vi) Compilador 'C' Utilidades para manejar terminales kernel shell Figura No. 3: Resumen Arquitectónico del Sistema Operativo UNIX
  • 58. JDCM UNIX SVR4 - NI 2 03. DESCRIPCION DE DIRECTORIOS IMPORTANTES /bin Contiene programas ejecutables y utilitarios propios del sistema. /dev Contiene archivos especiales que representan dispositivos. /etc Contiene programas y archivos que UNIX utiliza para su administración. /lib Contiene librerías para programas y lenguajes (compiladores). /tmp Contiene archivos temporales que pueden ser creados por cualquier usuario o el mismo sistema operativo. /usr Contiene archivos, programas, o utilitarios que son adicionales a los del sistema operativo. /hinv Contiene archivos de configuración de hardware. Sistema de archivos propio de UNISYS. /home Directorio por defecto para los directorios de los usuarios. /proc Punto de montaje para otro tipo de sistema de archivos. /sbin Contienen los programas requeridos por el comando ' init ' para el proceso de carga o para recuperación a partir de una falla del sistema. También contiene los comandos administrativos para el modo mono_usuario. /stand Punto de montaje para el sistema de archivos de carga (bfs). / (root) stand sbin dev etcunix term console home jose maria tmp var usr bin lib sbin ls cat = Directorios = Archivos Ordinarios = Archivos Especiales = Enlaces Figura No. 4: Jerarquía del Sistema Operativo UNIX B. ACCESO AL SISTEMA UNIX - REPASO 01. QUE ES NECESARIO?  Un terminal con las siguientes características:  Debe estar en línea.y configurado a FULL DUPLEX., NO PARITY, BAUD RATE (acorde con el computador), generar letras minúsculas siempre.  Definido con la variable TERM:  Un nombre para acceso (login) mediante el cual el sistema UNIX lo identifique como usuario autorizado.  Una palabra clave (password) que verifique su identidad.
  • 59. JDCM UNIX SVR4 - NI 3 02. CONVENCIONES GENERALES  Los comandos deben ser ingresados en minúsculas (a menos que se especifique lo contrario)  Existen caracteres especiales simples:  # para borrar un caracter  @ para borrar una línea entera  o compuestos: i  ^d CTRL d, salir del sistema  ^s / ^q CTRL s / CTRL q, XON/XOFF  ^h CTRL h, borrar caracter  ^u CTRL u, borrar línea  ^c CTRL c, interrumpir la ejecución del comando  o teclas especialmente etiquetadas:  CR Termina una línea y posiciona el cursor en una nueva línea.  ESC Realiza una función específica al usarse con otra tecla.  DEL Anula la línea de comando actual.  BREAK Detiene la ejecución de un comando o programa. C. LINEAS DE COMANDO - REPASO 01. COMO EJECUTA EL SISTEMA UNIX UN COMANDO USUARIO SHELL KERNEL PROGRAMAS COMANDOS UTILITARIOS ETC. FIgura No. 5: Funcionamiento del shell  Luego de presionar la tecla CR para ejecutar un comando, el shell:  Chequea que exista el comando.  Chequea los permisos.  Analiza los argumentos y opciones de la línea de comando.  Inicia el proceso.  Al terminar vuelve al prompt. 01. EDITOR 'vi' - Parte II (1) MOVIMIENTO DENTRO DE UNA PANTALLA  zCR Redibuja la pantalla con la línea actual al tope de la ventana.  z- Redibuja la pantalla con la línea actual al final de la ventana.  z. Redibuja la pantalla con la línea actual al centro de la ventana. D. EDITORES DE TEXTOS
  • 60. JDCM UNIX SVR4 - NI 4 (2) MOVIMIENTO POR BLOQUE DE TEXTO  ( Inicio de la oración previa.  ) Inicio de la oración siguiente.ii  { Inicio del párrafo previo.  } Inicio del párrafo siguiente.iii (3) MODIFICAR TEXTO  n(CR) O ' ', corre los caracteres a la derecha ' n ' líneas.  n(CR) O ' ', corre los caracteres a la izquierda ' n ' líneas.  ^V Inserta caracteres especiales.  ~ Cambia de mayúsculas a minúsculas, o viceversa.  ` Acento grave: retorna el cursor a la posición antes de ejecutar el comando `x .  '' Dos apóstrofes solos: lo retornan al inicio de la línea donde estuvo originalmente.  `` Dos acentos graves: lo retornan exactamente a donde estuvo.  . Repite el último comando. (4) BUSQUEDAS DENTRO DE LAS LINEAS  nfx Mueve el cursor a la ocurrencia ' n ' del caracter ' x ', hacia adelante.  nFx Mueve el cursor a la ocurrencia ' n ' del caracter ' x ', hacia atrás.  ntx Posiciona el cursor antes de la ocurrencia ' n ' del caracter ' x ', hacia adelante.  nTx Posiciona el cursor después de la ocurrencia ' n ' del caracter ' x ', hacia atrás.  ; Repite el último comando f, F, t, T.  , Repite el último comando f, F, t, T, pero al revés. (5) OPCIONES DE LA LINEA DE COMANDOS  vi +n file Abre el archivo 'file' en la línea ' n '.  vi + file Abre el archivo 'file' en la línea ' n '.  vi +/patrón file Abre el archivo 'file' en la primera ocurrencia de 'patrón'.  vi -R file Abre el archivo 'file' en modo de sólo lectura.  vi -r file Recupera el buffer editado de 'file' luego de un crash del sistema.iv a) OTRAS FUNCIONES (1) BUFFERS ESPECIALES  Son de propósito general, numerados del 1 al 9 y representan una historia de los últimos 9 buffers modificados. Siguen una estructura LIFO.  Se nombran desde la ' a ' hasta la ' z ' (26 en total). Se les puede adicionar texto utilizando su correspondiente mayúscula. Se mantienen mientras permanezca en el editor.  Nomenclatura:  nc  Donde: Indica el uso de un buffer. n Nombre del buffer. c Comando y su rango asociado. Ejemplo: myw Copia una palabra en el buffer m . mp Obtiene el contenido del buffer m y lo ubica después del cursor.
  • 61. JDCM UNIX SVR4 - NI 5 (2) COMANDOS ':'  :f Muestra el archivo actual, la línea donde se encuentra el cursor y el % del archivo hasta ese punto.  :f [file] Renombra el archivo en el buffer.  :e# Retorna al archivo anteriormente editado (funciona entre 2 archivos).  :e 'file4' Se edita un archivo dentro de una lista que está fuera de orden.  :args Asumiendo una lista de archivos: file1, file2, file3, file4, file5, y si se olvida los archivos que se están editando, el archivo actual aparece entre corchetes.  :n Cuando se termina de editar el archivo fuera de orden, se regresa al anterior.  :rew Se reinicia la edición desde el inicio de la lista.  :rew! Se descartan los cambios y se inicia nuevamente.  :vi Se reingresa al modo normal de edición por pantalla completa, en caso haya salido de la misma y pasado al modo comando de 'ex'. (3) FIJAMOS EL MEDIO AMBIENTE DEL EDITOR  Se pueden cambiar las opciones de 'vi' utilizando el comando 'set', una vez cargado el comando 'vi'.  También lee un archivo de inicialización en el directorio de trabajo denominado ' .exrc ', donde se incluyen comandos 'set'. set showmode number  Se puede construir una variable ' EXINIT ' y exportarla. Si está presente se usa en lugar de ' .exrc '. EXINIT='set showmode number' export EXINIT Sintaxis: :set Mostramos el valor de las opciones que ha modificado durante su sesión de edición. :set all Mostramos todas las opciones del comando set y sus valores normales. :set opt=val Fijamos una opción a un valor determinado. :set noopt Regresamos una opción a su valor original. :set opt? Mostramos el valor actual de una opción. Algunas opciones: showmode Muestra un mensaje de estado en el lado inferior derecho. ai Indenta las líneas automáticamente, según la anterior. Se regresa presionando CTRL d. nu Muestra las líneas con numeración. wrapmargin=x Especifica el tamaño del margen derecho que se utiliza para quebrar (wrap) el texto conforme se tipea, ahorrando el tener que ingresar manualmente CR. ignorecase Diferencia las letras mayúsculas de las minúsculas en las búsquedas. list Muestra los caracteres escondidos. wrapscan Permite encontrar todas las ocurrencias de una búsqueda sin importar la posición de inicio (hace wrap al inicio del archivo).
  • 62. JDCM UNIX SVR4 - NI 6 COMUNICACIONES A. COMUNICACION CON OTROS SISTEMAS UNIX 01. INTRODUCCION  Sus programas constitutivos han evolucionado y se le ha agregado nuevos componentes pero manteniendo la misma estrategia básica.  El enviar correo y software a usuarios de otros sistemas fué un evento significativo para la comunidad UNIX a tal punto que tal vez UUCP sea responsable por el desarrollo de UNIX.  UUCP fue tan vital para tanta gente que el mismo usuario tuvo que manejarlo ya que incluso los proyectos de envergadura dependían del correo electrónico. De cualquier forma, los usuarios y no los proveedores (como a menudo ha sido el caso con UNIX) ingresaron al negocio de desarrollarlo y brindarle soporte.  Hubo muchas versiones pero a partir de 1983 se ha estandarizado, ha sido adoptada por ATT (denominada Basic Networking Utility) y ha sido aceptada conociéndose también como HoneyDanBer por Honeyman (honey), Nowitz (dan) y Redman (ber), como se le conoce debido a que esas personas lo integraron. 02. CARACTERISTICAS  Requerimientos mínimos de harware para una ins-talación UUCP.  Requiere un puerto tty y tal vez un modem.  Un sistema pasivo únicamente recibe contacto de otros sistemas.  Un sistema activo es el que puede iniciar estos contactos.  La comunicación más simple es conectando dos equipos puerto a puerto.  UUCP puede utilizar casi cualquier hardware que soporte una comunicación FULL-DUPLEX (pares trenzados, modems, Ethernet, PBX). 03. DESCRIPCION GENERAL  Si pensamos que una red es un conjunto de máquinas entre las que se puede transferir archivos y en las que se puede ejecutar comandos de forma remota entonces, se puede usar UUCP para implementar una red.  Una red sugiere cierta clase de cooperación entre todas las máquinas que la componen sin embargo, ya que UUCP no impone ningún control administrativo en éstas, una red UUCP tiende a ser anárquica esto es, aunque todas las máquinas empleen UUCP, no hay seguridad en que dos máquinas se comuniquen entre sí.  El ser miembro de una red UUCP no significa necesariamente que se pueda comunicar con todos los miembros de la red y esto porque no es realmente una red. El mecanismo de comunicación (dispositivo, login, etc.) para cada máquina que puede ser accesada debe residir en un archivo local de forma que éstas tengan la habilidad de comunicarse, enviar información y ejecutar comandos, o enviar información solamente, aceptar a todos o sólo algunos usuarios, por ejemplo.  En la conección UUCP se involucran dos capas de protocolos de comunicación siendo la de más alto nivel el protocolo UUCP mismo que se encarga de intercambiar la identificación del sistema, enviar un número de secuencia, negociar el protocolo de bajo nivel (X.25, TCP/IP, etc.), iniciar las transferencias de archivos, ejecutar la secuencia de desconexión. Como cada mensaje se inicia con un caracter de sincronismo ( ^P ) y se termina con un caracter nulo ( ^@ ) o nueva línea ( ^J ), la detección de errores simplemente significa reconocer la ausencia del caracter de sincronismo. Pero esto es antes y después de utilizar el protocolo de bajo nivel ya que durante la comunicación en sí, UUCP utiliza el protocolo de bajo nivel para detección y corrección de errores.
  • 63. JDCM UNIX SVR4 - NI 7 04. Comando 'uname' Propósito: Muestra el nombre del sistema local. Sintaxis: /usr/bin/uname [-amnrsv] Opciones: ###a Toda la información. ###m Nombre de la máquina (hardware). ###n Nombre del nodo. ###r Revisión (release) del sistema operativo. ###s Nombre del sistema operativo. ###v Versión del sistema operativo. Consideraciones:  Sin opciones, muestra el nombre del nodo con que se identifica en una red de comunicaciones. Ejemplo: $ uname -a unix usa 4.0 2 i486 386/AT Nombre de máquina Versión del sistema operativo Release del sistema operativo Nombre del nodo Nombre del sistema 05. Comando 'uuname' Propósito: Lista los nombres de los sistemas en la red. Sintaxis: /bin/uuname[-l] Opciones: ###l Muestra sólo el nombre del sistema local. Consideraciones:  Los nombres de los sistemas conocidos para 'uucp' se encuentran en el archivo 'Systems' y a menos que el 'cu' utilize otro diferente, deben ser los mismos sistemas.  Sus directorios de trabajo son los siguientes: /usr/spool/uucp /usr/spool/uucppublic/* /usr/lib/uucp/* Ejemplo: $ uuname -l Unisys $ uuname 0SUNISYS 1SUNISYS Unisys
  • 64. UNIXWARE INTERMEDIO JDCM UNIX SVR4 - NI 8 06. Comando 'uucp' Propósito: Copia archivos a otros sistemas UNIX. Sintaxis /usr/bin/uucp [-Cjmr] [-n log] {archivo_fuente} {archivo_destino} Opciones: ###C Copia el archivo local al directorio spool para transferencia. ###j Muestra el número de trabajo uucp para efectuar el seguimiento del estado del trabajo o para terminarlo. ###m Notifica por correo (al que lo requiere) el término del trabajo. ###r Encola el trabajo para transferencia, no lo envía. ###n 'log' Notifica al que recibe que el archivo ha sido enviado. Consideraciones:  El nombre completo de un archivo localizado en un sistema remoto debe contener todas los nombres de sistemas que intervienen, separados por signos de exclamación ( ! ) como en: nombre_del_sistema!/trayectoria sistem_1!sistem_2!sistem_3!/trayectoria  El nombre completo precedido por '~logname' refiere al directorio base del logname remoto.  El destino se agrega al directorio '/var/spool/uucppublic'.  Agrege un ' / ' al destino para asegurarse que el destino es un directorio. Si no existe se crea. Ejemplo: $ uucp -m mi_archivo sys1!sys2!/var/spool/uucppublic/user2 $ uucp -n rem_usuario locfile sys1!~/dir/ $ uucp -jr sys1!sys2!~/FILE2 sys1!~/user1/ 07. Comando 'uuto' Propósito: Copia los archivos fuente a un directorio público. Sintaxis: /bin/uuto [-m] { fuente } { destino } Opciones: m Notifica al que envía que la transferencia está completa. Consideraciones:  Envía una copia del archivo fuente al directorio '/var/spool/uucppublic/PUBDIR' (receive/logname) en el otro sistema y notifica al usuario designado por correo. Ejemplo: $ uuto -m empleados sys4!userx 08. Comando 'uupick' Propósito: Acepta o rechaza los archivos transferidos. Sintaxis: /bin/uupick [-s sistema] { usuario }
  • 65. JDCM UNIX SVR4 - NI 9 Opciones: ###s 'sistema' Busca sólo los archivos enviados por el 'sistema' nombrado. Consideraciones:  Se usa en combinación con el comando anterior.  Cuando el usuaio es notificado, se usa este comando para buscar en el directorio PUBDIR los archivos destinados al 'usuario'. Comandos internos:  * Resumen de comandos.  CR Siguiente entrada.  d Borra entrada.  m [directorio] Mueve la entrada al directorio actual o a uno diferente.  a [directorio] Mueve todas las entradas al directorio actual o a uno diferente.  p Imprime el contenido del archivo.  q / ^d Salida. Ejemplo: $ uupick -s sys2 09. Comando 'uustat' Propósito: Muestra o cancela los requerimientos de trabajo para el uucp. Sintaxis: /bin/uustat [-aq] [-k 'job_id'] Opciones: ### a Muestra todos los trabajos en cola. ### q Muestra los trabajos en cola para cada sistema remoto. ### k 'job_id' Cancela el trabajo designado por 'job_id' en la cola. Consideraciones:  Sin opciones, muestra la siguiente información:  Número de trabajo.  Fecha y hora en que fué enviado.  Designa ' S ' como enviado y ' R ' como recibido.  Nombre del sistema de destino.  Logname del que envía.  Tamaño transferido en bytes.  Nombre del archivo. 10. Comando 'cu' Propósito: Conecta el sistema local a un sistema remoto para transferir archivos o para ejecutar comandos en el sistema remoto. Sintaxis: /bin/cu [-d] [-l línea] [-s velocidad] { destino } Opciones:  d Muestra actividad de diagnóstico.  l 'línea' Especifica el nombre de dispositivo o 'línea' utilizado(a) para la conexión.  s 'velocidad' Especifica la 'velocidad' de transmisión. Consideraciones:  Los componentes 'destino' del comando pueden ser:
  • 66. JDCM UNIX SVR4 - NI 10  Número telefónico de un sistema remoto.  Nombre del sistema remoto.  Una dirección LAN.  Se termina la conexión remota con el comando: ~. Ejemplo: $ cu sys01 $ cu -l /dev/term/10 11. Comando 'uux' Propósito: Ejecuta comandos en sistemas remotos. Sintaxis: /bin/uux [-n] [-m archivo] comando Opciones: ### n No envía notificación al usuario. ### m 'archivo' Reporta el estado de la transferencia en el 'archivo' nombrado. Consideraciones:  Los comandos a ejecutarse están restringidos por el archivo '/etc/uucp/Permissions' Ejemplo: $ pr texto | uux host!lp
  • 67. JDCM UNIX SVR4 - NI 11 BASES DE LA ADMINISTRACION UNIX A. COMANDOS PARA OPERACIONES DE RESPALDO 01. DEFINICIONES DE ARCHIVAMIENTO Y BACKUP a) ARCHIVAMIENTO:  Copia archivos que no se usan a menudo.  Almacena datos fuera de línea.  Copia selectivamente archivos y/o directorios.  Capacidades de restore. b) BACKUP:  Copia archivos o el contenido total de un filesystem.  Capacidades de restore en caso fallara el sistema. 02. Comando 'tar' Propósito: Archivador de información. Sintaxis: /usr/bin/tar [opciones] [dispositivo de salida] [archivos] Opciones: ###c Crea una nueva cinta y registra los archivos desde el inicio de la cinta. ###f Declara que el siguiente argumento es el nombre del dispositivo de salida, siendo el default la cinta. ###v Muestra cada archivo en pantalla a medida que se graba. ###x Extrae el contenido del archivo de la cinta. ###t Lista los nombres de los archivos en cinta. Consideraciones:  Ventajas:  Provee una lista de contenido.  No requiere etiqueta en la cinta.  Permite recuperaciones totales o parciales.  Es capaz de copiar archivos de una ubicación a otra.  Posee mecanismo de checksum incluído.  Puede usarse en combinación con el comando: find.  Desventajas:  No se puede copiar archivos especiales. Ejemplo: $ tar cv /usr/acct/user1/memo $ tar cv /usr/acct/user1 $ tar cv . $ tar xv $ tar xv /usr/acct/user1/letter
  • 68. JDCM UNIX SVR4 - NI 12 03. Comand 'cpio' Propósito: Copiar archivos hacia y desde un destino determinado. Sintaxis: /usr/bin/cpio [dirección] [parámetros] archivos Opciones: ###Dirección: ### o copia archivos a la cinta ### i copia archivos de la cinta ### p copia hacia el directorio especificado ###Parámetros: ### c escribe una información de cabecera en ASCII ### v muestra cada archivo en la pantalla ### B transfiere en bloques de 5k ### d crea directorios si se requiere ### l linkea los archivos en lugar de copiar-los (cuando sea posible) ### u copia sin importar la edad del archivo ### m retiene la fecha de modificación ###Archivos: ### Define los archivos, directorios o file-system que desea copiar. Consideraciones:  Ventajas:  Provee una lista de contenido.  No requiere etiqueta en la cinta.  Permite restores totales o parciales. Permite copiar archivos especiales.  Capaz de copiar archivos de una ubicación a otra.  Puede utilizar el comando find como entrada. Puede utilizarse en combinación con el comando dd.  Desventajas:  No tiene mecanismo de checksum.  Sintaxis compleja. Ejemplo: $ find . -print /tmp/copy $ cpio -ocv /tmp/copy /dev/rmt/c0d0v 04. Comando 'dd' Propósito:  Dump de datos/Convierte y copia archivos/Factores de bloqueo Sintaxis: /usr/bin/dd [opciones] Opciones: ###bs=x Especifica el factor de bloque. ###ibs=x Especifica el factor de bloque de entrada. ###obs=x Especifica el factor de bloque de salida. ###if=x Especifica el archivo de entrada. ###of=x Especifica el archivo de salida. Ejemplo: $ find . -print |cpio -ocvB|dd of=/dev/rmt1 $ dd if=/dev/rmt1 of=file1 conv=ascii $ dd if=/dev/rmt0 ibs=300k obs=5k|cpio -icvdmu $ cpio -ocvB/tmp/partial|dd of=/dev/rmt0 ibs=5k obs=300k
  • 69. JDCM UNIX SVR4 - NI 13 B. IMPRESION DE ARCHIVOS - PARTE II 01. Comando 'disable' Propósito: Deshabilita una impresora o un trabajo de impresión. Sintaxis: /usr/bin/disable [opciones] impresoras Opciones: ### r 'razón' Asocia una 'razón' a la desactivación ### c Cancela los requerimientos de impresión. Consideraciones:  Este comando desactiva las impresoras nombradas.  Por default, cualquier requerimiento (listado) que se esté imprimiendo en el momento, se reimprimirá desde el principio (desde la página uno).  La razón la reporta el comando lpstat o cuando se trata de enviar algún trabajo a la impresora deshabilitada. Ejemplo: $ disable printer1 printer printer1 now disabled 02. Comando 'enable' Propósito: Activa las impresoras previamente deshabilitadas. Sintaxis: /usr/bin/enable [lista de impresoras] Consideraciones:  Habilita las impresoras nombradas en la lista de impresoras para que impriman los pedidos del comando lp.  Se puede ver el estado de las impresoras mediante el comandolpstat. Ejemplo: $ enable printer1 printer printer1 now enabled 03. Comando 'accept' Propósito: Acepta requerimientos de impresión para una determinada impresora. Sintaxis: /usr/lib/accept [destino] Consideraciones:  El destino puede ser una impresora o una clase de impresoras. Ejemplo: $ /usr/lib/accept printer12
  • 70. JDCM UNIX SVR4 - NI 14 04. Comando 'reject' Propósito: Prevenir que la impresora especificada acepte trabajos. Sintaxis: /usr/lib/reject [opción] [destino] Opciones: ###r 'razón' Asocia una razón a la desactivación. Consideraciones:  El destino puede ser una impresora o una clase de impresoras. Ejemplo: $ /usr/lib/reject -r En mantenimiento print01 05. Comando 'lpmove' Propósito: Redirecciona los trabajos entre un destino y otro. Sintaxis: /usr/lib/lpmove [trabajos/destino1]destino2 Opciones: ### trabajos Requerimientos de impresión o destino1.(en este caso se desactiva destino1 -el sistema le hace un reject-) ### destino2 Impresora que recibe trabajo. Consideraciones:  No se chequea el estado de aceptación del destino.  No se mueve aquellos trabajos que no puedan ser manejados por el destino. Ejemplo: $/usr/lib/lpmove laser-31 print12 06. Comando 'lpsched' Propósito: Activa el sistema spooler. Sintaxis: /usr/lib/lpsched Consideraciones:  Direcciona los requerimientos de impresión a las impresoras correctas, a través de las interfaces adecuadas.  Inicia los trabajos del spool normal Ejemplo: /usr/lib/lpsched 07. Comando 'lpshut' Propósito: Desactiva el sistema spooler.
  • 71. JDCM UNIX SVR4 - NI 15 Sintaxis: /usr/lib/lpshut Consideraciones:  Detiene el funcionamiento del '/usr/lib/lpsched' así como las impresiones en curso.  Las impresiones así detenidas se reinician (desde el inicio) cuando se levanta nuevamente el sistema spooler. Ejemplo: /usr/lib/lpshut C. FACILIDADES ADMINISTRATIVAS 01. Comando 'ln' Propósito: Crear enlaces múltiples a un objetivo i.e., hacer que un archivo/comando sea reconocido en el sistema por más de un nombre. Sintaxis: /usr/bin/ls [-ns] { archivo_fuente } { archivo_destino] Opciones: ###n No sobreescribe el objetivo si existe. ###s Crea el enlace simbólico Consideraciones:  Un enlace no crea una copia nueva del archivo sino meramente otro puntero a la misma información.  La opción ' -s ' se utilixa para crear enlaces a través de sistemas de archivos y crea un enlace simbólico que es un archivo conteniendo la trayectoria del archivo con el que se enlaza. Ejemplo: $ ln file1 qtr1 $ ln qtr1 report/anual $ ln -n filex ln: filex: file exists $ ls -il /fs1/fileA -rw-r--r-- 1 user1 admin 952 May 13 16:45 fileA $ ln -s /fs1/fileA /fs2 $ ls -il /fs2/fileA lrwxrwxrwx 1 user1 admin 37 Aug 2 14:17 /fs2/fileA - /fs1/fileA 02. Comando 'od' Propósito: Visualización interna de un archivo. Sintaxis: /usr/bin/od [opciones] archivo Opciones: ###b Interpreta los bytes en octal. ###c Interpreta los bytes en ASCII. ###x Interpreta las palabras en hexadecimal. Consideraciones: Ejemplo:
  • 72. JDCM UNIX SVR4 - NI 16 $ cat /tmp/filep | od -xc | lp 03. Comando 'umask' Propósito: Fija la máscara para creación de archivos. Directorio de residencia: Comando interno Sintaxis: umask [máscara octal] Consideraciones:  Modifica los niveles de permiso normales que han sido asignados a un archivo o directorio cuando alguno de éstos es creado. El permiso normal para directorios es 777 y para archivos es 666.  Cuando se crea un archivo, el sistema resta los números definidos en este comando de los permisos de acceso normalmente asignados por el sistema.  Si se omite la máscara, se muestra el valor de la máscara actual. Ejemplo: $ umask 022 Remueve el permiso de escritura para el grupo y otros: 777 se convierte en 755 para directorios y 666 se convierte en 644 para archivos. 04. Comando 'ps' Propósito: Reporta el estado de los procesos activos del sistema. Sintaxis: /usr/bin/ps [opciones] Opciones: ### e Muestra la información de todos los procesos que se ejecutan en ese momento. ### f Genera un listado de todos los procesos. ### l Genera un listado detallado. ### u 'usuario' Información del 'usuario'. ### t 'terminal' Información procesada por el 'terminal'. Consideraciones:  Sin opciones, se muestra la información referente al terminal que invoca el comando y en forma resumida. Ejemplo: $ ps -elf Detallamos la salida de este comando ### F Flags asociados con los procesos. ### S El estado del proceso:  O Proceso ejecutándose en un procesador.  S Durmiendo, esperando que algún evento se complete.  R Proceso en cola de ejecución.  I Libre, el proceso se está creando.  Z Estado zombie, el proceso ha terminado y el proceso padre no lo espera.  T Proceso detenido por una señal ya que el proceso padre le está haciendo un seguimiento. ### UID El número de identificación del usuario al que le pertenece el proceso. ### PID La identificación del proceso. ### PPID La identificación del proceso padre. ### C Uso del procesador para control interno.
  • 73. JDCM UNIX SVR4 - NI 17 ### PRI Prioridad del proceso. ### NI Valor utilizado para el cálculo de prioridades. ### ADDR Dirección en memoria del proceso. ### SZ Tamaño en páginas (o clicks: 1/18.2 seg) de la imagen swapable del proceso en la memoria principal. ### WCHAN La dirección del evento por el que el proceso está durmiendo. Si está en blanco, está corriendo. ### STIME Tiempo de inicio del proceso. ### TTY El terminal que controla el proceso (aparece ? cuando ningún terminal está al control) ### TIME Tiempo acumulado de ejecución del proceso. ### COMMAND Nombre del comando. 05. Comando 'kill' Propósito: Terminar un proceso. Sintaxis: /usr/bin/kill [opciones] PID Opciones: ###9 Elimina el proceso identificado por PID. ###15 Termina el proceso identificado por PID. Consideraciones: Ejemplo: $ kill -9 2355 06. Comando 'nice' Propósito: Ejecutar un comando con prioridad específica. Sintaxis: /usr/bin/nice [- 'incremento'] comando [argumentos] Opciones:  -/+ 'incremento' Valor numérico indicativo de nivel de prioridad. Consideraciones:  El comando se ejecuta con menor prioridad de la normal.  Las prioridades varían entre 0 (la mayor) y 39 (la menor). El valor normal el 20.  Un incremento positivo baja la prioridad. Un incremento negativo aumenta la prioridad. Ejemplo: $ nice -4 prog1 07. Comando 'nohup' Propósito: Impedir que un proceso se cancele antes de tiempo. Sintaxis: /usr/bin/nohup comando [argumentos]
  • 74. JDCM UNIX SVR4 - NI 18 Consideraciones: Ejemplo: $ nohup prog2 08. Comando 'cron' Propósito: Ejecutar automáticamente las tareas del sistema. Directorio de residencia: /usr/bin Consideraciones:  Las tareas se ejecutan en el background y se mantiene un tiempo prefijado de ejecución.  Actividades controladas por el comando crontab.  El script /etc/rc2 activa el cron.  Mantiene algunos logs:  /usr/lib/cron/log  /usr/lib/cron/OLDlog  Los archivos crontab que maneja están ubicados en el directorio: /usr/spool/cron/crontab.  Existen algunos usuarios predefinidos de archivos crontab:  root  sys  adm  uucp 09. Comando 'crontab' Propósito: Los usuarios pueden crear sus propias entradas crontab. Directorio de residencia: /usr/bin Consideraciones:  El administrador del sistema controla el acceso.  Procedimiento:  Liste las entradas crontab actuales y cree un archivo temporal conteniendo esa lista: $ crontab -l microntab  Edite el archivo recientemente creado para incluir nuevas entradas.  Derive los nuevos requerimientos al utilitario cron: $ crontab microntab  Uso del comando crontab:  Sección de comandos del crontab.  El comando crontab genera un archivocuyo nombre es el login del usuario.  El archivo se ubica automáticamente en el directorio: /usr/spool/cron/crontabs.  El usuario debe estar incluído en el archivo: /usr/lib/cron/cron.allow para poder utilizar el comando crontab. Si no existe el archivo cron.allow, se utiliza el archivo cron.deny.  El archivo cron.deny contiene los usuarios que no pueden utilizar el comando crontab.  Si ninguno de estos archivos cron.allow y cron.deny existe, sólo el usuario root está permitido de accesar al comando crontab.  Para visualizar las entradas crontab definidas por usuarios, use el comando: crontab -l  Para remover las entradas crontab definidas por usuarios, use el comando
  • 75. JDCM UNIX SVR4 - NI 19 crontab -r  Formato de archivos crontab:  Cada entrada consta de dos secciones. La primera es un conjunto de 5 campos que determinan los intervalos en los que se ejecuta un comando. La segunda es el nombre completo del comando con sus opciones y argumentos o redirecciones de E/S.  Sintaxis: A B C D E comando donde:  A minutos  B horas  C dias (del mes)  D mes  E dias (de la semana)  Cada uno de estos campos puede dividirse en subcampos utilizando una coma como separador de subcampos. También puede expresarse un rango utilizando un guión entre dos números: 0,15,30,45 * * * * /bin/who /tmp/file 0 12 * * 1-5 /bin/who /tmp/filex 10. Comando 'at' Propósito: Permite a los usuarios el especificar procesos para ejecutarse en un tiempo posterior. Sintaxis: /usr/bin/at [tiempo] [fecha] [+ incremento] /usr/bin/at [opciones] [trabajo] Opciones: ### r Remueve el trabajo previamente enviado. ### l Lista todos los trabajos enviados por el usuario. ### tiempo Uno o dos dígitos que repre-sentan horas y cuatro dígitos que representan hora y minutos. Puede usarse el sufijo am o pm de lo contario, se sobre-entiende formato de 24 horas. También se reconocen nombres como: noon, now, next, midnight. ### fecha Puede especificarse como nom-bre de mes seguido por número de día o día de la semana completo o abreviado a tres caracteres. Se reconocen días especiales como today y tomorrow. ### incremento Es simplemente un número se-guido de minute, hours, days, weeks, months, years. También se acepta el singular. Consideraciones:  Se ejecuta por el comando cron.  Ejecuta los trabajos en un tiempo específico.  Archivos para acceso:  /usr/lib/cron/at.allow  /usr/lib/cron/at.deny  Limitaciones:  Asume que el usuario logeado es el propietario de todos los trabajos at .  Si no existen los archivos indicados, el usuario root es el único permitido de accesar a este utilitario.  Si no se especifica archivo de salida, el trabajo se ejecuta y se envía la salida via correo del usuario. EJEMPLO:v $at 0815am Jan 24 $at 8:15am $at now + 1 day $at 1900 thursday next week $at 2am pr long_file | lp CTRL d $at 5pm Friday $cat file.prt pr long_file | lp $at 2am file.prt $at -r 580496400.a $at now + 3 hours chk.users
  • 76. JDCM UNIX SVR4 - NI 20 11. Comando 'atq' Propósito: Muestra la cola de trabajos. Sintaxis: /usr/bin/atq [-cn] usuarios Opciones: ###c Muestra los trabajos en cola en el orden en que fueron enviados para ejecución. ###n Muestra el número total de trabajos en la cola. Consideraciones:  Muestra mayor información que el comando 'at -l'.  Ejecutado sin opciones muestra los trabajos en la secuencia de tiempo de ejecución designada. Ejemplos: $ at -l 685996200.a Fri Sep 6 14:30:00 1991 685992660.a Fri Sep 6 13:31:00 1991 685989060.a Fri Sep 6 12:31:00 1991 685987320.a Fri Sep 6 12:02:00 1991 $atq Rank Execution date Owner Job Queue Job name 1st Sep 6,1991 12:02 userb 685987320.a a stdin 2nd Sep 6,1991 12:31 userb 685989060.a a stdin 3rd Sep 6,1991 13:31 userb 685992660.a a stdin 4th Sep 6,1991 14:30 userb 685996200.a a stdin $atq -c Rank Execution date Owner Job Queue Job name 1st Sep 6,1991 14:30 userb 685996200.a a stdin 2nd Sep 6,1991 13:31 userb 685992660.a a stdin 3rd Sep 6,1991 12:31 userb 685989060.a a stdin 4th Sep 6,1991 12:02 userb 685987320.a a stdin 12. Comando 'atrm' Propósito: Remueve los trabajos de la cola. Sintaxis: /usr/bin/atrm [-aif] trabajos usuarios Opciones: ###a Remueve todos los trabajos en la cola del usuario que invoca el comando, mostrando una confirmación de los trabajos removidos. ###i Modo interactivo, solicita confirmación para remover cada trabajo. ###f Fuerza la remoción, sin mostrar mensaje de estado. Ejemplos: $atq Rank Execution date Owner Job Queue Job name 1st Sep 6,1991 12:02 userb 685987320.a a stdin 2nd Sep 6,1991 12:31 userb 685989060.a a stdin 3rd Sep 6,1991 13:31 userb 685992660.a a stdin $atrm 685996200.a 685996200.a: removed $ atrm -ia 685996200.a: remove it? n 685992660.a: remove it? n 685989060.a: remove it? n
  • 77. JDCM UNIX SVR4 - NI 21 13. Comando 'batch' Propósito: Permite a los usuarios el especificar procesos para ejecutarse en un tiempo posterior. Sintaxis: /usr/bin/batch comando 1 comando n CTRL d Consideraciones:  Se ejecuta por el comando cron. Ejecuta los trabajos cuando estén disponibles los recursos del sistema.  Archivos para acceso:  /usr/lib/cron/cron.allow  /usr/lib/cron/cron.deny  /usr/spool/cron/atjobs/###.b  Limitaciones:  Si los archivos indicados no existe, el usuario root es el único permitido de accesar a este utilitario.  Si no se especifica archivo de salida, el trabajo se ejecuta y se envía la salida vía correo del usuario. EJEMPLO: $batch lp file1 cal date who CTRL d $ job ####.b at Mon/June 27/14:00:00
  • 78. JDCM UNIX SVR4 - NI 22 EL SHELL A. EL SHELL INTERACTIVO  El shell es reponsable por la ejecución de todos los programas que se requieran desde un terminal.  Cada vez que se ingresa una línea al shell, éste analiza la línea y luego determina qué hacer. La línea que se ingresa al shell se conoce normalmente como línea de comando.  El shell chequea esta línea y determina el nombre del programa a ejecutarse y qué argumentos debe pasar al programa, según esta estructura:  nombre de comando argumentos  El shell utiliza caracteres especiales para determinar dónde se inicia y termina el nombre de programa y cada argumento. Estos caracteres se denominan comúnmente espacios en blanco y son: espacio, tabulador, fin de línea.  Las ocurrencias múltiples de estos caracteres son ignorados por el shell.  Se le puede utilizar para instalar software, procedimientos de backup, mejorar la interface de comandos, customizar los comandos shell.  Este programa muestra en pantalla el mensaje:  login: y espera hasta que alguien tipee algo seguido por RETURN.  En ese momento, el programa ttymon inicia la ejecución del programa login para concretar el proceso de logearse.  Cuando loginse inicia, muestra el mensaje password: y espera por él.  Una vez ingresados estos datos, login los verifica en un archivo llamado /etc/passwd que contiene una línea por cada usuario del sistema y ejecuta el programa correspondiente. B. EL AMBIENTE SHELL 01. QUE SUCEDE CUANDO SE HACE LOGIN?  Login  Se verifica en el /etc/passwd la validez del login  Se inicializan las identificaciones de grupo y usuario  Se establecen los directorios base y el shell  Se ejecutan los comandos del /etc/profile  Se ejecutan los comandos del ./profile  Aparece el prompt del shell 02. QUE HACE EL '/etc/profile'?  Muestra el contenido del /etc/motd.  Le notifica si tiene correo.  Fija la máscara de creación de archivos.  Fija la hora según zona.
  • 79. JDCM UNIX SVR4 - NI 23 03. QUE HACE EL './profile'?  Es realmente un script shell. Es un archivo escondido (debido al punto antes del nombre).  Se le incluyen los comandos que desea ejecutar al momento de logearse.  Contiene variables predefinidas y determina su ambiente de trabajo. Ejemplo: $ cat .profile PATH=:/bin:/usr/bin:/etc MAIL=/usr/mail/usuario TERM=vt100 PS1=Comando?: export TERM PATH MAIL PS1 date 04. PROCEDIMIENTOS SHELL a) EXPRESIONES REGULARES  Se definen como un conjunto de uno o más grupos de caracteres.  Son interpretados por el comando que las requiere. b) METACARACTERES  ^ Inicio de línea.  $ Fin de línea.  Caracter especial de ESCAPE.  . (punto) un solo caracter .  * Cero o más ocurrencias del caracter anterior al ' * '.  [] Rango o lista de caracteres.  [^] Fuera del rango. c) ENMASCARAMIENTO  Remueve el significado especial de los siguientes caracteres: ', , , #, *, ?, ., |, ;, (, ), [, ], SPACE, CR, TAB. Los siguientes caracteres permanecen inalterables: $, `, .  '' Igual que el anterior pero remueve adicionalmente los caracteres: $, `,.  Remueve el significado especial del caracter que le sigue. d) PROCESOS EN EL BACKGROUND  Cuando se requiere ejecutar varios procesos batch.  Normalmente, se termina uno y se inicia el otro.  Al enviar los procesos al background podemos ejecutarlos todos a la vez y liberar el terminal para otros procesos.  La estructura del proceso a ser enviado al background es:  comando [opciones] argumentos e) EJECUCION ALTERNATIVA DE PROGRAMAS  Los siguientes comandos permiten ejecutar un programa sin crear un nuevo proceso:  . (Dot o Punto): Ejecuta un programa como parte del proceso actual. No se pueden ejecutar comandos compilados: . programa
  • 80. JDCM UNIX SVR4 - NI 24  exec Es un comando incluído en el shell. No se crea un nuevo proceso para ejecutar el programa i.e., reemplaza totalmente al proceso en ejecución. No ejecuta programas compilados: exec programa  El Bourne shell permite encontrar errores en los programas con dos opciones:  v muestra cada línea a medida que se ejecuta.  x Muestra los comandos y sus argumentos a medida que se ejecutan. f) VARIABLES DEL SISTEMA  Asignamos un valor a una variable:  variable=valor  Obtenemos luego su contenido:  echo $variable  Logramos que todos los comandos siguientes utilicen este dato (si lo necesitan):  export variable  Los nombres de variables deben empezar con una letra y pueden consistir de letras, dígitos y caracteres para subrayado.  No puede haber espacios antes o después del signo = .  Cuando se asigna un valor que contiene espacios a una variable shell, encierre el dato entre comillas. g) VARIABLES PREDEFINIDAS MAIL Nombre del archivo que el utilitario ' mail ' utiliza para almacenar su correo. HOME Directorio base del usuario. PATH Conjunto de directorios que usa el shell cuando busca comandos para ejecutar. Los busca en el orden en que se encuentran. PS1 Prompt primario (usualmente ' $ ') PS2 Prompt secundario (normalmente ' ' o ' ? ') IFS Separador de campos interno (usualmente espacio, tabulador, nueva línea) h) COMO MOSTRAMOS LAS VARIABLES AMBIENTALES? env Muestra las variables que se exportan hacia o por el shell. set Muestra las variables locales o aquellas que no han sido exportadas y no son parte del ambiente del sistema. Ejemplo: $env HOME=/dp/usr1 LOGNAME=usr1 MAIL=/usr/mail/usr1 PATH=:/bin:/usr/bin TERM=vt100 TZ=EST5:OEDT $set HOME=/dp/usr1 LOGNAME=usr1 MAIL=/usr/mail/usr1 PATH=:/bin:/usr/bin TERM=vt100 TZ=EST5:OEDT IFS= PS1=$ PS2=
  • 81. JDCM UNIX SVR4 - NI 25 05. REDIRECCION DE ENTRADA/SALIDA  En general, los comandos UNIX:  Toman una pieza de información.  La procesan de alguna forma.  Pasan el resultado de esta ejecución a un destino.  Pero,  De dónde viene la información que se va a procesar?.  A dónde van los resultados de esta ejecución?.  Debemos conocer: entrada estandard Son los argumentos que se pasan al comando (provienen de archivos o directamente del teclado), está identificada como '0'. salida estandard Esta salida puede ser un terminal, archivo o una impresora, está identificada como '1' y representa el resultado de un comando. error estandard El terminal recibe todos los mensajes de error y se identifica como '2'.  El propósito es redireccionar estos estándares desde un terminal a un archivo o utilitario UNIX. a) SIMBOLOS Y COMANDOS DE REDIRECCION Entrada Redirecciona la entrada desde un archivo dado. Salida Redirecciona la salida a un archivo dado. Adiciona la salida a un archivo dado. | Redirecciona la salida a un comando dado. tee Redirecciona la salida a destinos múltiples. Ejemplo: $ cat nombres empleados $ cat nombres empleados $ cat archivo1 archivo2 2errores $ lp archivo3 1listalp $ find / -print | wc -l 1lineas 2/dev/null $ find / -print | wc -l 1lineas 2^1 $ ed archivo1 edscript archivo2 $ a.out dato1 resultado b) ENCADENAMIENTOS  Un encadenamiento (pipe) UNIX es una herramienta utilizada para conectar comandos entre sí.  La salida estandard de uno es la entrada estandar de otro.  Se elimina la necesidad de archivos temporales.  Los símbolos de redirección trabajan con archivos y el símbolo de encadenamiento ( | ) trabaja con comandos: cmd1 [opciones] [argumentos] | cmd2 [opciones] [argumentos] Ejemplo: $ who | sort $ ls *.cob | lp 06. COMANDOS EN SECUENCIA  En una sola línea de comando puede haber varios comandos.  Se pueden ejecutar uno tras otro utilizando como separador de comando el caracter ( | ).  Si la línea de comando es demasiado larga, se puede continuar en la siguiente línea con el caracter ( ) y CR inmediatamente después.
  • 82. JDCM UNIX SVR4 - NI 26  Podemos agrupar comandos y hacer que su salida esté combinada: ( ) :  $ (cd; ls) 07. VARIABLES PROPIAS DEL SHELL $# Número de argumentos en el comando a ejecutarse. $? Estado de salida del último comando ejecutado:  0 Ejecución completa y exitosa  1 Ejecución completa pero no exitosa  2 Condición de error $$ Identificación del proceso en ejecución. $! Identificación del último proceso que se ejecuta en el background. $* Valor que representa todos los argumentos de la línea de comando. $0 Nombre del script shell. $1-$9 Los primeros 9 argumentos pasados al script shell. 08. CONSTRUCCIONES ADICIONALES Se dividen en:  Condicionales propiamente dichas:  test  if ... then ... else  case  Anillos y sus controles:  for  until  while  break  continue  expr  exit 09. SINTAXIS a) if ... then ... else if lista de comandos 1 then lista de comandos 2 else lista de comandos 3 fi Ejemplo: if [ -d $1 ] then echo directorio $1: ls $1 else cat $1 fi b) case case string in pattern) lista de comandos;; . .
  • 83. JDCM UNIX SVR4 - NI 27 pattern) lista de comandos;; esac Ejemplo: echo (v) ventas echo (a) administracion echo (d) desarrollo echo nnSeleccione: c read dato case $dato in v|ventas) programa1;; a|admin) programa2;; d|desa) programa3;; *) echo dato invalido ;; esac c) for for variable in lista de palabras do comando1 . . comando2 done Ejemplo: for i in prog1 prog2 do diff $i.c /usr/lib/$i.c done d) while while lista de comandos 1 do lista de comandos 2 done Ejemplo: while sleep 30 do who | grep $1 done e) until Equivale a while - not Ejemplo: until who | grep $1 do sleep 30 done f) test  Permite chequear archivos o directorios, si son ejecutables, leíbles o escribibles, así como comparaciones entre strings y enteros algebraicos.  Chequeo de archivos: Opciones Verifica que d El directorio exista f El archivo exista r Sea leíble w Sea escribible x Sea ejecutable
  • 84. JDCM UNIX SVR4 - NI 28 s Contenga información Ejemplo: $test -w archivo $echo $? 0  Chequeo de strings: Opciones Verifica si n Contiene información z Su longitud es 0 = Hay igualdad entre strings ! Hay diferencias entre strings Ejemplo: $var1=rojo $var2=azul $test $var1 = $var2 $echo $? 0  Operadores relacionales: Opciones Significado -eq igual a -ne diferente a -lt menor que -le menor o igual que -gt mayor que -ge mayor que o igual Ejemplo*: $num=3 $test $num -lt 5 $echo $? 0  Operadores lógicos: (tenga en cuenta los símbolos) Opciones Significado ! negación -a operación AND -o operación OR Ejemplo: $num=5 $test $num -eq 4 -o $num -le 5 ; echo $? 0  Operadores y y o: Opciones Significado || OR condicional AND condicional Ejemplo: $test -f $1 || echo No existe $1 g) break  Termina el anillo más interno. Ejemplo: while echo Ingrese un dato: read dato1 do case $dato1 in q) break ;;
  • 85. JDCM UNIX SVR4 - NI 29 quit) break ;; ) echo Ingrese un dato por favor ;; *) echo $dato1 archivo ;; esac done h) continue  Termina una iteración Ejemplo: while echo Ingrese un dato: read dato1 do case $dato1 in q) break ;; quit) break ;; ) continue ;; *) echo $dato1 archivo ;; esac done i) expr  Evalúa los argumentos como expresión. Posee las operaciones aritméticas básicas. EJEMPLO: ctrl=0 while echo Ingrese un dato: read dato do case $dato in q) break ;; ) echo $ctrl datos procesados break ;; [A-Z]) echo Dato inválido exit 1 ;; *) expr $dato * $dato ctrl=`expr $ctrl + 1` ;; esac done exit 0
  • 87. JDCM UNIX SVR4 - NI a APENDICES BIBLIOGRAFIA UNIX Networking Stephen Kochan Patrick Wood Hayden Books UNIX System Library UNIX System Administration David Fiedler Bruce Hunter Hayden Books UNIX System Library UNIX Shell Programming Stephen Kochan Patrick Wood Hayden Books UNIX System Library Tricks of the UNIX Masters Russell Sage The Waite Group SAMS System V Operating System User's Guide, ATT Notas i Caracteres precedidos por ( ^ ) se denominan caracteres de control y se obtienen presionando a la vez las teclas de control CTRL y la tecla deseada. ii Encuentra una oración al encontrar un punto seguido de por lo menos dos espacios, o un punto y el último caracter no blanco de la línea. iii Se define un párrafo como un texto hasta la siguiente línea en blanco. iv El comando :pre fuerza al sistema a preservar el buffer de edición. v Existen dos maneras de suministrar información al comando at: a. Luego de ejecutar el comando at, presione RETURN y el sistema UNIX espera que ingrese los comandos que desea ejecutar hasta que presione CTRL d. b. Cree un archivo conteniendo los comandos a ejecutarse y suminístrelo al comando at utilizando el símbolo de redirección.
  • 88. UNIXWARE INTERMEDIO JDCM NI 1 EJERCICIOS 1. Explique las diferencias entre los conjuntos de variables que se han estudiado. 2. Construya un script que solicite al usuario el mes, dia, y año de su nacimiento y luego lo muestre. 3. El ejercicio anterior pero indicando los parámetros solicitados en la misma línea de comando. 4. El ejercicio anterior pero que muestre la información de tres maneras diferentes, las cuales deben construirse en un script adicional. 5. El ejercicio anterior debe ejecutarse de por lo menos tres maneras diferentes. Anote los resultados. 6. Construya un script que acepte doce palabras en la línea de comando y las muestre una por una en pantalla. 7. Construya un script que cambie el modo de uno o más archivos a ejecutables. Los datos deben darse en la misma línea de comando. 8. Muestre el número de archivos que ingresan en la línea de comando del ejercicio anterior. 9. Se requieren dos script que trabajen sobre un archivo de nombre “TELEFONO” y cuyo formato es: Nombres y Apellidos Teléfono Dirección a El primero debe adicionar al archivo indicado un registro completo el cual debe suministrarse en la línea de comando. b El segundo debe mostrar la línea del archivo indicado que concuerde con cualquiera de los campos relacionados con el mismo. 10. Escriba un script que solicite al usuario un nombre de archivo, verifique si es válido, y muestre el resultado de esta prueba. 11. Escriba un script que solicite y acepte mes, día, y año como entrada estándar. Este programa debe verificar el número de argumentos y brindar los mensajes de error apropiados. El programa debe aceptar el mes ya sea escrito totalmente, abreviado a tres letras, o utilizando su número relativo. Su salida debe ser simplemente la fecha ingresada en formato: Mes Día, Año. 12. Desarrolle un script que no sobreescriba un archivo cuando se trata de copiar algún otro sobre él, sino que previamente se asegure de lo que va a hacerse. 13. Escriba un script que muestre las características completas del primer archivo ordinario que se encuentre en su directorio de trabajo. 14. Desarrolle un medio para verificar una lista de usuarios logeados cada 60 segundos. Si la lista actual es diferente a la anterior, muéstrela en la salida estándar. 15. Con una sola línea de programa, comente e indique el número de usuarios en el sistema. 16. Construya un script que permita realizar las siguientes tareas periódicamente: a Encontrar todos los archivos que no han sido accesados en 90 días. b Encontrar todos los archivos de usuarios que estén vacíos. c Listado detallado de todos los directorios ‘lost+found’. d Reportar los archivos pertenecientes a root, con el bit ‘setuid’ puesto. e Listar los archivos de usuarios que son permitidos de escribir por other. f Encontrar todos los directorios que tienen más de 6 bloques de tamaño. g Dar una lista de todos los signons que tienen estado de curso. h Encontrar todos los archivos core. i Imprimir las estadísticas de disco libre, con el tamaño de cada sistema de archivos. j Imprima la estadística de uso de disco para el directorio /usr/acct. 17. ¿Cuál es el valor actual de ‘umask’?. 18. Copie los archivos de un directorio /abc (conteniendo a su vez 2 sub-directorios ./bcd y ./cde al directorio /tmp. Utilize todas las formas que conozca. 19. Cómo encontraría todos los “ascii text” del directorio /etc?. 20. Cómo reemplazaría este texto por “archivo texto”?. 21. Cómo haría esto empleando sólo una línea de comando?. Utilize el editor ‘vi’. 22. Cómo imprimiría en la impresora printer las 5 primeras líneas de los archivos del problema anterior?. 23. Cómo imprimiría en la impresora anterior la 2 últimas líneas del archivo /etc/profile, con una cabecera?. Utilize todas las formas conocidas. 24. Qué comandos son válidos de ejecutar por un usuario simple?:
  • 89. UNIXWARE INTERMEDIO JDCM NI 2 a) who -Hu | lp b) rm a* c) cd /etc/bin d) cp /etc /tmp e) cp /etc/dir1/file34 /usr/dir1 f) vi ./*.c g) cat -x file?.c h) cat file[0-9][0-9].* | lp i) cp “abc acb” ../tmp j) cp “abc*abc” /usr/tmp k) echo “bcdnbcd” l) head +20 filexyz m) split -30 f24 abcdefghijklm n) umask 000 o) chmod 368 p) mesg -no q) write user03 /dev/tty106 r) cancel printer s) /usr/lib/lpsched t) set file1;env file1 25. Encuentre todos los archivos en un directorio determinado que contengan un determinado texto. Tanto el directorio como el texto deben ser suministrados en la línea de comando. Debe verificarse la existencia del directorio. 26. El ejercicio anterior pero solicitando los datos. 27. Los dos ejercicios anteriores combinados: si no se suministran los datos en la línea de comando, deben solicitarse. 28. Complete los siguientes comandos de edición: CAMBIO BORRADO COPIADO OBJETO: una palabra dos palabras tres palabras atrás una línea hasta el fin de la línea hasta el inicio de la línea un solo caracter DESDE EL CURSOR HASTA: el final de la pantalla la siguiente línea la siguiente oración el siguiente párrafo un patrón dado el final del archivo la línea número 13
  • 90. UNIXWARE INTERMEDIO JDCM NI 1 PREGUNTAS DE EXAMEN Para todos los problemas/ejercicios siguientes, donde convenga o exista más de una alternativa de solución, asuma lo que crea conveniente y detalle en base a qué toma su decisión. 1.- Construya un script el cual se encarge de realizar las tareas de backup normales indicando el directorio o archivos a trabajar y el dispositivo a emplear. Utilize los comandos ‘tar’ y ‘cpio’ i.e., un script por cada comando. 2.- Utilizando el editor ‘ed’, construya un script que realice lo siguiente: tome las modificaciones de un archivo ‘A’ y las efectúe sobre otro archivo ‘B’. Se supone que el archivo ‘B’ es un texto de ayuda que se va a actualizar en base al archivo ‘B’. 3.- Desarrolle un script utilizando una sola línea de comando el cual sortee el contenido de dos directorios suministrados al script. Hay que verificar que existan estos directorios y mostrar los errores correspondientes. 4.- Desarrolle un script que muestre el contenido de dos directorios suministrados en dos columnas, cada una indicando el directorio que se trabaja. Mostrar la información por pantalla. Debe verificarse la existencia de los directorios. Al final del trabajo debe mostrarse el número de archivos contenidos en cada directorio, así como la utilización que hacen de disco. 5.- Detalle las diferencias (si existen) entre los dos comandos siguientes: a) grep “$1” `find “$2” -print` b) find “$2” -print | while read F do grep “$1” $F done 6.- Utilizando la variable del sistema IFS desarrolle un script que permita ubicar un comando a partir de la variable PATH asignada al entorno. Debe aceptar una de dos opciones: ‘-l’ para listado largo y ‘-c’ para mostrar sólo el directorio donde se encuentra el comando indicado. Deben controlarse los errores posibles. De no existir el archivo en el PATH del usuario, enviar un mensaje y proceder a su búsqueda en todo el directorio ‘/usr’. 7.- Desarrolle un script que lea el archivo ‘/etc/vfstab’ y monte todos los filesystem posibles previa verificación de los mismos. Asegúrese que sólo el superusuario pueda realizar esta operación y se haga en modo mono-usuario - los mensajes deben ser totalmente descriptivos -. 8.- Para efectuar un backup se requiere la información de todos los filesystem sin directorios temporales (/tmp, /usr/tmp) ni ‘lost+found’. Esta información debe estar iniciada directamente por el nombre de los archivos a trabajar. debe emplearse el editor de líneas ‘ed’ para esto. 9.- Adicione los caracteres ‘’ al final de cada línea de un texto cualquiera. Utilice el editor ‘ed’. 10.- Escriba un script que acepte como argumento un dígito entre 0 y 9 y lo convierta en su equivalente en castellano. Debe aceptarse exactamente un dígito. Controlar los errores. 11.- Escriba un script que imprima el tipo de caracter (número / mayúscula / minúscula / caracter especial) de un solo caracter dado como argumento. Controlar los errores. 12.- Escriba un programa que ejecute en el background y cuente el número de usuarios logeados al final de cada intervalo y también el número de procesos ejecutados durante el intervalo. Permita especificar el intervalo con una opción ‘-t’ con un valor por defecto de 10 minutos. 13.- Escriba un programa que busque en un archivo un patrón determinado, de forma similar al comando ‘grep’. Para cada línea que se encuentre en el archivo muestre una “ventana” alrededor de la línea que se encuentre i.e., muestre la línea que precede a la que se encuentra y la que sigue a ésta línea encontrada. Asegúrese de manejar apropiadamente los casos especiales en que el patrún concuerda con la primera y última línea del archivo.
  • 91. UNIXWARE AVANZADO JDCM UNIX SVR4 - NA/1 i TABLA DE CONTENIDO ILUSTRACIONES: Pág Figura No. 1: Directorios y archivos ‘lp’ 25 Figura No. 2: Proceso de trabajos de impresión 29 PARTES CONSTITUTIVAS: Pág EDITORES DE TEXTOS 1 EL SHELL 4 CONFIGURACIONES 21 APENDICES a CONTENIDO: Pág TABLA DE CONTENIDO i Comandos de Referencia en Línea ii EDITORES DE TEXTOS 1 EDITOR ‘VI 1 01. Verificación de patrones 1 02. Ejecución de comandos desde ‘vi’ 1 03. Construcción de macros en ‘vi’ 1 04. Ejemplos desarrollados 2 05. Más Ejemplos 3 EL SHELL 4 EL BOURNE SHELL 4 01. El lenguaje programador de comandos 4 EL ‘KORN’ SHELL 7 01. Características 7 02. Control de tareas 8 03. Generalidades 9 EL EDITOR ‘SED’ 9 01. El editor batch de strings 9 02. Ejemplos 10 AWK, LENGUAJE DE PROGRAMACION 10 01. El comando 10 02. Estructura 11 03. Ejemplos 13 COMANDOS ADICIONALES 15 01. Comando ‘basename’ 15 02. Comando ‘dirname’ 15 03. Comando ‘echo’ 15 04. Comando ‘expr’ 16 05. Comando ‘getopts’ 17
  • 92. UNIXWARE AVANZADO JDCM UNIX SVR4 - NA/1 ii 06. Comando ‘compress’ 17 07. Comando ‘script’ 18 08. Comando ‘sum’ 18 09. Comando ‘tee’ 19 10. Comando ‘timex’ 19 11. Comando ‘tput’ 19 12. Comando ‘tr’ 20 CONFIGURACIONES 21 MANEJO DE USUARIOS Y GRUPOS – REPASO 21 01. Archivo ‘/etc/group’ 21 02. Comando ‘newgrp’ 21 03. Archivo ‘/etc/passwd’ 21 04. Archivo ‘/etc/default/passwd’ 22 05. Archivo ‘/etc/shadow’ 22 ARCHIVOS Y DIRECTORIOS 22 01. Archivo ‘/etc/inittab’ 22 02. Directorio ‘/dev’ 24 03. Archivo ‘/etc/ttydefs’ 24 04. Archivo ‘/etc/ttytype’ 24 05. Archivo ‘/usr/lib/terminfo’ 24 EL SISTEMA SPOOL 25 01. Introducción 25 02. Directorio ‘/etc/lp’ 25 03. Directorio ‘/var/spool/lp’ 26 04. El Utilitario ‘lpadmin’ 27 05. Comando ‘lpusers’ 28 06. Procesamiento de requerimientos de impresión 28 APENDICES a BIBLIOGRAFIA a NOTAS 1 Comandos de Referencia en Línea 1. Los siguientes comandos UNIX le brindan acceso en línea a la información del manual de referencia: MAN Accesa a las entradas del manual de referencia en el sistema. Utilícelos siempre!
  • 93. JDCM UNIX SVR4 - NA/1 1 EDITORES DE TEXTOS EDITOR ‘VI 01. Verificación de patrones 1. Al hacer reemplazos globales, puede buscar no sólo cadenas fijas de caracteres sino también patrones de palabras los cuales se denominan ‘ expresiones regulares ’. Estas expresiones regulares ayudan a efectuar búsquedas de palabras en un contexto ya que en una búsqueda podemos encontrarnos con algunas ocurrencias que no deseamos. 2. Mencionaremos algunas (todas las cuales no se espera que funcionen en todas las implementaciones): . Verifica un solo caracter excepto CR. * Verifica cero o más caracteres iguales al que precede al ‘ * ’. [] Verifica cualquiera de los caracteres encerrados entre los corchetes. (...) Salva el patrón encerrado entre paréntesis en un buffer especial (numerado de 1 a 9), por línea. n Obtiene el patrón ‘ n ’ previamente salvado (contado de izquierda a derecha. {n,m} Verifica un rango de ocurrencias del caracter que lo precede. ‘ n ’ y ‘ m ’ son enteros entre 0 y 256. El primero especifica el número de ocurrencias a verificar: {n} Obtiene exactamente ‘ n ’ ocurrencias. {n,} Obtiene por lo menos ‘ n ’ ocurrencias. Muestra el patrón completo de búsqueda cuando se utiliza en una cadena de reemplazo (es el patrón encontrado). 02. Ejecución de comandos desde ‘vi’ 1. Sabemos que se pueden ejecutar comandos UNIX desde ‘vi’: r file Lee el contenido del archivo ‘file’ en la línea después del cursor. !cmd Genera un nuevo shell donde se ejecuta el comando ‘cmd’. r!cmd Lo mismo que antes pero el resultado lo guarda en en texto. 2. Pero también podemos enviar un bloque de texto como entrada estándard a un comando UNIX cuya salida reemplaza el bloque de texto en el buffer. Esto puede hacerse ya sea desde ‘ex’ o ‘vi’. La diferencia principal entre estos dos métodos es que el bloque de texto se indica con direcciones de líneas en ‘ex’ y con objetos de texto en ‘vi’. 90,99!sort Pasa las líneas 90 a 99 al comando ‘sort’ y la salida de éste reemplaza las líneas correspondientes en el texto. 3. En ‘vi’ esta secuencia se invoca al tipear un signo de exclamación seguido de cualquier objeto ‘vi’ que indica un bloque de texto (debe manejar más de una línea), y luego el comando UNIX a ejecutar. 4. Tenemos a continuación algunos comandos interesantes: !)cmd Pasa el texto de la oración siguiente a ‘cmd’. !% Ejecuta el comando script que se está editando. !! Repite el último Comando ‘!%’. 03. Construcción de macros en ‘vi’ ( a ) Comando ‘map’ 1. Asigna una secuencia de comandos a una tecla no usada. Se usa en modo comando. 2. Opciones: map x secuencia Define el caracter ‘x’ como una ‘secuencia’ de comandos de edición. unmap x Deshabilita la secuencia definida para ‘x’. map Lista los caracteres que están mapeados actualmente. ( b ) Comando ‘ab’ 1. Asigna un texto (o frase) a una abreviatura (que puede ser una o más letras) las que se expanden automáticamente en el texto, dondequiera tipee esta abreviatura (siempre que aparezca como palabra individual y no como parte de otra palabra). Se usa en modo de inserción.
  • 94. UNIXWARE AVANZADO JDCM UNIX SVR4 - NA/1 2 2. Opciones: ab abrev frase Comando para insertar la ‘frase’ como abreviatura ‘abrev’. ( c ) Función ‘@’ 1. Se utilizan los buffer nombrados (aquellos entre la ‘ a ‘ y la ‘ z ‘). 2. Modo de creación:  Escriba la línea de comando en su texto.  Luego la borra en un buffer nombrado.  Ejecute el contenido de este buffer anteponiendo el caracter ‘ @ ‘ al nombre de este buffer.  El comando ‘@@’ repite el último comando ‘ @ ’. 04. Ejemplos desarrollados 1 Ejemplo No. 01 1. Supongamos que desee reemplazar la palabra monitor por pantalla en todo el texto: :g/pantalla/s//monitor/g 2. Pero al continuar la edición del texto encontramos palabras como monitors, amonitormiento, monitorzo. Regresamos a nuestro último buffer con la instrucción: :e! 3. Y tratamos de limitar nuestra búsqueda: :g/pantalla /s//monitor /g 4. Pero ahora no reemplaza las palabras: ‘ pantalla ’, ‘ pantalla ’, ‘ pantalla ’, etc. Al encerrar el patrón de búsqueda con ‘ ’ y ‘ ’, especificamos que el patrón debe encontrar solamente palabras completas, con o sin signos de puntuación subsecuentes: :g/pantalla/s//monitor /g 5. Como ‘ ’ y ‘ ’ están disponibles sólo en ‘ vi ’ (y ‘ ex ’), puede utilizarse una forma alternativa: :g/pantalla([ ,.;:!?])/s//monitor1/g Lo cual busca y reemplaza ‘ pantalla ’ seguida de un blanco o de cualquiera de los signos de puntuación indicados. Adicionalmente, el caracter que se encuentra se salva utilizando ‘ ( ’ y ‘ ) ’y se restaura al lado derecho utilizando ‘ 1 ’. Ejemplo No. 02 1. Supongamos que debemos hacer cambios menores a los nombres de nuestros modelos de computadoras para actualizar los manuales correspondientes. El modelo U5000 debe renombrarse Series U5000, junto con los modelos U6000 y U7500: :g/U[567][05]00/s//Series /g 2. Pero después decidimos quitar el ‘U’ del número de modelo y colocar ‘Series’ después de este número: :g/(Series) U([567][05]00)/s//2 1/g 3. O, dada la siguiente lista de partes: UN6350–FPU UN6150–CPU UN6050–8IO UN6050–4MB reemplazar ‘50’ por ‘65’: :g/UN6(013)50/s//UN6165/ ó, :g/UN6(013)50/s/50/65/g
  • 95. UNIXWARE AVANZADO JDCM UNIX SVR4 – NA/1 3 Ejemplo No. 03 1. Puede editar bloques de texto delimitado por patrones. 2. Suponga que tiene un manual de 150 páginas las cuales contienen las siguientes secciones: Modelo, Características, Descripción, Opciones. MODELO U6000/35 CARACTERISTICA I80486@33MHZ 0 CACHE MONOPROCESADOR 64 MB (MEMORIA) 64 USUARIOS (MAX) 42 GB DISCO (MAX) DESCRIPCION ARQUITECTURA EISA BUS SCSI OPCIONES MODELO U6000/65 MULTIPROCESADOR 5 PROC X EQUIPO CARACTERISTICAS I80486@33MHZ 256 KB CACHE 256 MB (MEMORIA) 256 USUARIOS (MAX) 42 GB DISCO (MAX) DESCRIPCION ARQUITECTURA EISA BUS DE MEMORIA DE 100 MB/SEG BUS SCSI OPCIONES y debemos mover el párrafo correspondiente a DESCRIPCION sobre el de CARACTERISTICAS, en todas las 150 páginas!. Y lo haremos con un solo comando!: :g/CARACTERISTICAS/,/DESCRIPCION/–1,mo/OPCIONES/–1 1 05. Más Ejemplos :g/^$/d Borre las líneas en blanco. ://usr/tomas/s///usr/linda/g Modifica una lista de nombres completos. Atención a los ‘ ‘. :g:/usr/tomas:s::/usr/linda:g Lo mismo que el comando anterior pero reemplazando el caracter delimitador. :1,10g/./s//;/g Cambie todos los puntos por punto y coma entre las líneas 1 y 10. :g/(.*) – (.*)/s//2 – 1/ Invierte el orden de los items separados por guión en una lista. :g/^Ejemplo[ s:]/s//Ejemplos: /g Estandariza los varios usos de una palabra o cabecera. :g/[Aa]yuda/s//AYUDA/g Cambia todas las ocurrencias de la palabra ‘ayuda’ o ‘Ayuda’ por ‘AYUDA’. :g/ */s// /g Reemplaza uno o más esapcios con un solo espacio. :g/: */s//: /g Reemplaza uno o más espacios que siguen al caracter ‘ : ’ con dos espacios. :g/([:.]) */s//1 /g Reemplaza uno o más espacios que siguen a un ‘ . ’ o a un ‘ : ’ con dos espacios. :g/ *$/s/// Borra todos los blancos iniciales. :g/[1–9].[1–9]*(.*)/s//1/g Remueve la numeración manual de las cabeceras de sección. X{1,10} Identifica de una a diez letras X consecutivas. [A-Za-z]{4,7} Identifica una secuencia de letras/palabras entre 4 y 7 letras de longitud. [a-zA-Z]{7} Identifica exactamente 7 letras. .{10} Identifica exactamente 10 caracteres (sin importar qué son) +{5,} Identifica al menos 5 signos + consecutivos. ^(.) Identifica el primer caracter de la línea, cualquiera que sea, y lo almacena en el registro 1 ^(.).*1$ Identifica todas las líneas en las que el primer caracter de la línea es el mismo que el último caracter en la misma línea ^(…)(…) los primeros tres caracteres de la línea se almacenan en el registro 1, y los siguientes tres en el registro 2 (.*)—(.*) identifica todos los caracteres hasta la primera tabulación y los asigna al registro 1, e identifica todos los demás caracteres que siguen asignándolos al registro 2
  • 96. UNIXWARE AVANZADO JDCM UNIX SVR4 – NA/1 4 EL SHELL EL BOURNE SHELL 01. El lenguaje programador de comandos 1. Es el lenguaje para procesamiento de comandos estándard del sistema operativo UNIX. 2. Su sintaxis es la siguiente: /bin/sh [–entvx][r][–c string] args donde: e Termina inmediatamente si un comando termina con estado de salida diferente a cero. n Lee los comandos pero no los ejecuta, útil para debugging. t Termina luego de leer y ejecutar un comando. v Imprime las líneas de entrada al shell a medida que se leen. x Imprime los comandos y sus argumentos a medida que se ejecutan. r Se invoca en forma restringida. c ‘string’ Los comandos se leen de ‘string’. 3. Como vemos, el comando ‘ sh ’ es un lenguaje de programación de comandos que ejecuta los comandos que lee de un terminal o archivo. 4. Posee una secuencia determinada para la interpretación de los comandos:  Se busca de izquierda a derecha los terminadores ( newline, : , , fi , done , esac, , || ).  Se sustituye variables y parámetros.  Se sustituye comandos.  Se establece la redirección de entrada/salida.  Se particiona en palabras usando $IFS.  Se fija la línea de comando (el comando mismo es identificado así como su ubicación, si es interno o si pertenece a un filesystem).  Se genera los nombres de archivo.  Se ejecuta el comando. 5. Cuando una línea empieza con ‘ # ’, se trata la línea como comentario. 6. Se puede ejecutar una lista de comandos en un sub–shell: ( lista de comandos ) 7. Se puede ejecutar una lista de comandos en el shell actual: { lista de comandos; } 8. Se puede definir una función que se referencia por el nombre: 2 nombre de función () { lista de comandos; } 9. A los parámetros posicionales ( $1, $2,..., $9 ) se les puede asignar un valor con el comando interno ‘set’. 10. A los parámetros clave (variables) se les asigna un valor. 11. No puede haber una función y una variable con el mismo nombre. 12. Se muestran a continuación las formas posibles de sustitución de parámetros: 3 4 ${parámetro} Se sustituye el valor de ‘parámetro’, si existe. ${parámetro:–palabra} Si ‘parámetro’ no es nulo, sustituye su valor de lo contrario sustituye ‘palabra’. ${parámetro:=palabra} Si ‘parámetro’ es nulo, sustituye ‘palabra’ de lo contrario, sustituye su valor. No se aplica para parámetros posicionales. ${parámetro:?palabra} Si ‘parámetro’ no es nulo, sustituye su valor de lo con–trario, imprime ‘palabra’ y sale del shell. 5 ${parámetro:+palabra} Si ‘parámetro’ no es nulo, sustituye ‘palabra’ de lo contrario, no sustituye nada. 13. La entrada o salida de un comando pueden re–direccionarse usando una notación especial que el shell interpreta:
  • 97. UNIXWARE AVANZADO JDCM UNIX SVR4 – NA/1 5 palabra Utiliza el archivo ‘palabra’ como entrada estándar. palabra Utiliza el archivo ‘palabra’ como salida estándar. palabra Utiliza el archivo ‘palabra’ como salida estándard, agregándole información si existe o creándolo si no. palabra Luego de realizarse la sustitución de parámetro o de comando en ‘palabra’, se lee la entrada al shell hasta la primera línea que concuerda con la ‘palabra’ resultante, o un fin de archivo. dígito Usa el archivo asociado con el descriptor de archivo ‘dígito’ como entrada estándar. dígito Usa el archivo asociado con el descriptor de archivo ‘dígito’ como salida estándar. dígito1dígito2 El descriptor de archivo que se asocia con el archivo ‘dígito2’ es el especificado por el archivo ‘dígito1’. 14. Existen algunas señales que el shell interpreta: NUM DESCRIPCION SEÑAL OBSERVACIONES 0 SHELL EXIT 1 HANG UP SIGHUP 2 INTERRUPT SIGINT Tecla DEL 3 QUIT SIGQUIT Similar a SIGINT pero incluye un core_dump 9 SURE KILL SIGKILL No puede ser atrapado ni ignorado 15 TERMINATE SIGTERM Software Termination Signal 15. Existen algunos comandos internos al shell: : El comando no hace nada, se retorna un código de salida cero. . file Lee y ejecuta los comandos incluídos en ‘file’ y retorna. break [n] Sale del lazo ‘for’ o ‘while’ si existe. En caso se especi–fique ‘ n ‘, sale ‘ n ‘ niveles. continue [n] Reasume la iteración del lazo ‘for’ o ‘while’. Si se especifica ‘ n ‘, reasume el lazo ‘ n ‘–simo. cd [arg] Cambia del directorio actual al especificado por ‘arg’. echo [–n][arg] Muestra los argumentos ‘arg’ y sin newline si se especifica ‘ –n ‘. eval [arg...] Los ‘argumentos’ son leídos como entrada al shell y se ejecutan los comandos resul– tantes. exec [arg] El comando especificado por los argumentos ‘arg’ se ejecuta en lugar de este shell sin crear un nuevo proceso. exit [n] Causa que el shell termine con el estado de salida dado por ‘ n ‘ y si se omite, el estado de salida es aquel del último comando ejecutado. export [nombre] os ‘nombres’ dados se marcan para que sean reconocidos automáticamente por otros co–mandos subsecuentes es decir, se brindan al ambiente. pwd Muestra el directorio de trabajo actual. read [nombre..] Se lee una línea de la entrada estándard y, utilizando el separador de campo interno IFS para delimitar las palabras, se asigna la primera palabra al primer ‘nombre’, la segunda palabra al segundo ‘nombre’, etc. y las palabras que quedan se asignan al último ‘nombre’. El código de retorno es cero a menos que se encuentre un fin de archivo. readonly [nombre] Los ‘nombres’ dados se marcan como de sólo lectura y los valores de estos ‘nombres’ no pueden ser cambiados por asignamientos subsecuentes. return [n] Causa que termine una función con el valor de retorno especificado por ‘ n ‘ y si éste se omite, el estado de retorno es aquel del último comando ejecutado. set Indica al shell ciertas condiciones de trabajo las cuales son activadas con ‘ – ‘ y desactivadas con ‘ + ‘. Son las mismas que las opciones exceptuando ‘ [–rc] ‘ y pueden fijarse desde dentro del programa. shift [n] Los parámetros posicionales mayores a 9 pueden ser accesa–dos mediante el corrimiento de ‘ n ‘ posiciones. trap [arg][n] Se lee y ejecuta el comando ‘arg’ cuando el shell recibe la(s) señal(es) ‘ n ‘. Si ‘arg’ es nulo, la señal es ignorada por el shell y por los comandos que invoca. Si ‘ n ‘ es cero, el comando ‘arg’ se ejecuta al salir del shell. 16. El shell evalúa las redirecciones de izquierda a derecha. 17. El comando ‘rsh’ (shell restringido) se usa para ambientes de ejecución con capacidades más controladas que las del shell estándar. Lo siguiente no está permitido:  Cambiar de directorio o el valor de $PATH.  Especificar trayectorias o comandos conteniendo ‘ / ’.  Redireccionar la salida ( ‘ ’ y ‘ ’ ). 18. Las palabras que se usan para nombres de archivos en la redirección de entrada/salida no deben emplear metacaracteres ya que éstos pierden su significado. 19. Para escribir los scripts eficientemente tenga en cuenta lo siguiente:  Optimize la trayectoria de búsqueda.  Ajuste la entrada/salida cuanto sea posible (E/S en bloques grandes en lugar de pequeños).
  • 98. UNIXWARE AVANZADO JDCM UNIX SVR4 – NA/1 6  Use comandos internos (‘test’ y ‘ : ’ son ejemplos de comandos internos, ‘expr’ y ‘true’ son externos o de filesystem).  Evite los procesos innecesarios (muchos procesos simultáneos demandan recursos).  Minimize la lista de comandos en las construcciones anidadas (especialmente en lenguajes interpretativos como el shell).  Use funciones cuando sea apropiado.  La facilidad de lectura y la claridad son importantes, agrege líneas de comentarios para este fin. Ejemplos: (1) $ readonly var1 $ var1=/etc/bin var1: is read only (2) $ readonly readonly var1 (3) $ readonly var1 $ sh $ var1=/etc/bin $ echo $var1 /etc/bin (4) $ var1=pwd $ ${var1:–ls} /usr/user01 $ var2= $ ${var2:–ls} ricky.c lucia.c (5) $ var2= $ ${var2:=pwd} /usr/user01 $ echo $var2 pwd (6) $ b=user01 $ a=’$b’ $ echo $a $ b $ eval echo $a user01 (7) $ echo ‘${var2:?pwd} ls’ test3 $ chmod 777 test3 $ var2=date $ export var2 $ test3 Tue Nov 17:14:.. co.c xn.c $ var2= $ test3 test3: var2:pwd (8) $ var4= $ ${var4:+pwd} $ var4=xyz $ ${var4:+pwd} /usr/user03 (9) $ cat test1 test2 “$*” test2 “$@” $ test1 uno ‘dos ’ tres uno dos tres uno dos tres (10) $ cat task5.cmd trap ‘rm –f /usr/tmp/$$; trap 0; exit’ 0 1 2 15 pgm2 (11) $ cat sig.cmd trap ‘echo “Abort”; exit 3’ 1 2 15 while true do echo ‘Programa Corriendo’ done (12) $ whowhere () { who pwd } (13) $ whowhere user01 tty103 May 13 10:48 user03 tty100 May 13 11:42 /usr/check (14) $ x=’`cat filex`’ $ echo $x `cat filex` $ eval echo $x línea 1 de filex línea 2 de filex línea 3 de filex
  • 99. JDCM UNIX SVR4 – NA/1 7 (15) $ cat test1 echo $1 $2 $3 echo $* save=$* shift echo $1 $2 $3 set $save echo $1 $2 $3 echo $* exit $ test1 uno dos tres cuatro uno dos tres uno dos tres cuatro dos tres cuatro uno dos tres uno dos tres cuatro (16) $ cat test1 test2 $* test2 $@ $ cat test2 echo $1 echo $2 echo $3 $ test1 uno ‘dos ’ tres uno dos uno dos EL ‘KORN’ SHELL 01. Características 1. La mayoría de las del Bourne Shell y muchas de las mejores características del C Shell. 2. La mayoría de los scripts escritos para Bourne Shell pueden ser usados sin modificación en el Korn Shell. Funciona igual que el Bourne Shell al leer el archivo .profile que contiene los valores de ambiente predeterminados. 3. Lee además el archivo de ambiente creado por el usuario, si existe. Su ubicación está definida por la variable ENV y puede estar incluída en el .profile del directorio base. 4. Incluye un Korn Shell restringido. 5. Presentamos algunas características únicas:  Historia de comandos se mantiene un archivo de historia que contiene los comandos ejecutados. Se puede accesar mediante editores y/o reejecutar comandos previos.  Alias de comandos las líneas de comando ingresadas se pueden adecuar a las necesidades de los usuarios al definirles un nombre corto denominado alias.  Control de tareas el Korn Shell brinda facilidades para controlar tareas -secuencias de comandos. Las tareas pueden detenerse o reasumirse y moverse entre el background y foreground  Opciones y variables son únicas para el Korn Shell y pueden utilizarse para modificar el ambiente del usuario. 6. Modo de edición de líneas de comando:  EDITOR = vi asigna el nombre del editor vi como el valor de la variable indicada —sin espacios.  VISUAL = vi asigna el nombre del editor vi como el valor de la variable -mayor jerarquía que la variable EDITOR.  set –o vi ejecuta el comando set utilizando la opción –o mode, en este ejemplo es el editor vi —mayor jerarquía que las variables EDITOR y VISUAL. - activa la opción y + la desactiva  ESCAPE presione esta tecla para ingresar al modo comando de edición.Presione k para navegar por la lista de comandos hacia atrás, o j para ir hacia adelante. Seleccione un comando mediante/patrón. Si desea el editor vi, simplemente presione v. 7. Historia de comandos:  HISTFILE variable que contiene el nombre del archivo de comandos. Por defecto es el archivo .sh_history y se localiza en el directorio base.
  • 100. JDCM UNIX SVR4 – NA/1 8  HISTSIZE determina el máximo número de comandos (relativo al comando actual) que se pueden referenciar para modificación y/o reejecución. El valor por defecto es 128. Tan pronto como el número de entradas exceda el valor de esta variable, los comandos menos recientes son inaccesibles, aunque permanecen en el archivo de historia.  r [número–secuencia] reejecuta comando de más reciente ejecución, o el indicado por el número de secuencia. 8. Comando alias:  Muestra todos los alias.  Define los alias y línea de comandos asociados.  Lista el valor del comandoasociado con el alias. 9. Comando unalias:  Remueve el alias nombrado de la lista de alias. Ejemplos $ alias (lista los alias actuales) $ alias limpio=´find . -atime +60 -exec rm {} ;´ $ alias limpio find . -atime +60 -exec rm {} ; $unalias limpio 02. Control de tareas 1. Estados:  foreground el trabajo se procesa inmediatamente antes que el control sea retornado al shell y se presente otro prompt.  background un trabajo es ejecutado y el shell retorna inmediatamente el control al usuario mientras el sistema continúa hasta completar la tarea. Si una tarea en este estado trata de leer del terminal, se detiene y se muestra un mensaje apropiado. Se previene esto mediante el comando stty tostop, de modo que no se interfiere con la salida de la tarea en foreground.  stopped (suspended) una tarea activa que se detiene de manera temporal.  terminated (killed) es una tarea que ha sido detenida y terminada. 2. Comandos:  jobs -option lista el estado de todos los trabajos -l: listado largo incluyendo PIDs -p: lista sólo los PID asociados ejecución  fg job_id coloca una tarea en el foreground  ^z suspende una tarea en el foreground  bg job_id coloca la tarea designada en el background  stop job_id suspende en el background la tarea desiagnada  kill -signal job_id termina la tarea designada  + identifica la tarea actual  - identifica la tarea anterior  %job_id(s) designa el número de la tarea  PID designa la identificación del proceso  %patrón la tarea conteniendo el patrón en la línea de comando Ejemplos $ sleep 300 [1[ 3105 $ jobs [1] + running sleep 300 $ bg %sleep [1] sleep 300 $ fg %1 sleep 300 CTRL z [1] + stopped sleep 300
  • 101. JDCM UNIX SVR4 – NA/1 9 03. Generalidades 1. Situaciones útiles (rpatrón es opcional):  let “i=i+1” representa: i=`expr $y + 1` se pueden utilizar varias expresiones en una sola línea.  substring string patrón remueve la porción más pequeña del lado derecho del string que concuerda con el patrón.  substring -l lpatrón string rpatrón se remueve del lado izquierdo la parte más pequeña del string que concuerda con lpatrón, y del lado derecho la parte más pequeña que concuerda con rpatrón.  substring -L lpatrón string rpatrón similar al anterior excepto que se remueve la parte del string más larga.  ${variable % patrón} equivale a `substring “$variable” patrón`  ${variable %% patrón} la parte más larga de $variable que concuerda con el patrón es la que se remueve.  ${variable # patrón} equivale a `substring -l patrón “$variable”`  ${variable ## patrón} equivale a `substring -L patrón “$variable”` 2. Posicionamiento:  typeset -Ln variables las variables se ajustan hacia la izquierda y se hacen de n caracteres de longitud, completando con espacios según convenga.  typeset -Rn variables las variables se justifican hacia la derecha y se hacen de n caracteres de longitud. 3. Arreglos: se pueden asignar valores a los elementos a medida que se necesiten, empezando en cero, y conteniendo hasta 512 elementos:  echo ${array[1]} muestra el valor del elemento #1 del arreglo.  echo ${array[*]} muestra los valores de todos los elementos del arreglo.  echo ${#array[*]} muestra el número de elementos del arreglo. EL EDITOR ‘SED’ 01. El editor batch de strings 1. Es editor no interactivo, usualmente utilizado para modificar archivos de gran tamaño y con diferentes condiciones en su estructura. 2. Su sintaxis es la siguiente: /bin/sed [–n][–e ‘script’][–f ‘sfile’] {files} donde:  n Suprime la salida por defecto.  e ‘script’ Indica los comandos de edición (script 6 ).  f ‘sfile’ Indica que el script se tome de ‘sfile’. 4. Si existe una sola opción ‘ –e ’ y no hay opciones ‘ –f ’, se puede omitir el primer flag. 5. Posee algunas funciones básicas: a Adiciona líneas a la salida. c Cambia líneas. d Borra líneas. i Inserta líneas. +p Imprime líneas. q Quit. r Lee un archivo. s/texto1/texto2 Sustituye cadenas de caracteres. w Escribe un archivo.
  • 102. JDCM UNIX SVR4 – NA/1 10 02. Ejemplos (1) $ cat binput 114 James 447 Audrey 628 Harry 599 Ken $ sed ‘4 s/Ken/Don/’ binput 114 James 447 Audrey 628 Harry 599 Don (2) $ sed –n ‘1,2p’ binput 114 James 447 Audrey (3) $ cat pfile 2s/447/448/ 3s/628/629 $ sed –f pfile binput 114 James 448 Audrey 629 Harry 599 Ken (4) $ sed ‘s/^/tabtab/’ binput binput.out $ cat binput.out 114 James 447 Audrey 628 Harry 599 Don (5) $ sed ‘s/^[1–9]/X/’ binput binput.out $ cat binput.out X14 James X47 Audrey X28 Harry X99 Don (6) $ sed ‘1,/^$/d’ testfile outfile (7) $ who bratton tty105 jan 7 09:09 walsh tty104 jan 7 09:14 blades tty100 jan 7 09:09 $ who | sed ‘s/ .* //’7 bratton 09:09 walsh 09:14 blades 09:09  sed -n ´1,2p´ intro imprime sólo las dos primeras líneas del archivo “intro”. La opción ‘-n’ le dice al comando sed que no imprima ninguna línea a menos que explícitamente se le diga que lo haga.  sed -n ´/UNIX/p´ imprime sólo las líneas que contienen el string UNIX .  sed ´1,10s/unix/UNIX/g´ intro cambia unix por UNIX dondequiera aparezca en las primeras 10 líneas del archivo intro .  sed ´/jan/s/-1/-5´ cambia el primer -1 por -5 en todas las líneas que contienen jan . AWK, LENGUAJE DE PROGRAMACION 01. El comando Propósito: 1. Los usuarios de computadoras emplean grandes cantidades de tiempo efectuando manipulaciones de datos simples y mecánicas, como cambiar el formato de la información, chequear su validez, encontrar items con alguna propiedad, adicionar números, imprimir reportes, y otras cosas similares. Todo lo anterior debe mecanizarse pero, no tiene sentido el escribir un programa especial en un lenguaje estándard como Pascal, COBOL, o C cada vez que se requiera una tarea como las anteriores. 2. El comando ‘ awk ’ es un lenguaje de programación expresivo y conveniente que hace posible el manejar dichas tareas con programas muy cortos, a menudo de dos o tres líneas de longitud 8 pero, dada su actual combinación de facilidades (fué mejorado en 1985), los programadores han escrito incluso programas significativamente largos. 3. Un programa awk es una secuencia de patrones y acciones que dicen qué buscar en la información de entrada y qué hacer cuando se encuentra. Un patrón puede seleccionar líneas mediante combinaciones de expresiones regulares y operaciones de comparación sobre cadenas de
  • 103. JDCM UNIX SVR4 – NA/1 11 caracteres, números, campos, variables, y arreglos de elementos. Las acciones pueden realizar procesamiento arbitrario sobre líneas seleccionadas. Sintaxis: /usr/bin/awk [–F ‘re’] parámetros.. ‘prog’[–f ‘progfile’] file Opciones:  F’re’ Define que el separador de campo de la entrada sea la expresión regular ‘re’.  parámetros Son variables internas a las que se asigna un valor antes de ser pasadas al comando.  f’progfile’ Es el archivo donde se encuentra el patrón ‘prog’ (si existe). Consideraciones: 1. El string ‘prog’ debe encerrarse entre apóstrofes ‘ ‘ para protegerlo del shell. Cada línea de entrada se verifica contra la porción patrón de cada sentencia patrón_acción y se ejecuta la acción asociada para cada patrón verificado. Una sentencia patrón_acción tiene la forma: patrón { acción } 2. Si no hay acción con un patrón, la línea que concuerda se imprime. Si no hay patrón con una acción, la acción se realiza en cada línea de entrada. 02. Estructura 1. Un programa ‘awk’ posee la siguiente estructura:  Una sección BEGIN  Una sección principal (registro)  Una sección END 2. La sección BEGIN se ejecuta antes que cualquiera de las líneas de entrada se lean, y la sección END se ejecuta luego que todos los archivos de datos se procesan. La sección registro se ejecuta una y otra vez por cada línea de entrada individual. 3. Los comandos terminan en ‘ ; ’, newline, ‘ } ’ y pueden consistir de:  if (condicional) sentencia [else sentencia]  while (condicional) sentencia  do sentencia while (condicional)  print [lista de expresiones]  print formato, [lista de expresiones]  for (expresión;condicional;expresión) sentencia  for (var in array) sentencia  delete array [subscript]  break  continue  { [ sentencia ] .... }  expresión 9  next 10  exit [expr] 11  return [expr] 4. El ‘formato’ es un string que contiene tanto la información a imprimirse como las especificaciones de qué conversiones deben realizarse en las expresiones en la lista de argumentos. Cada especificación empieza con un ‘ % ‘ y termina con una letra que determina la conversión. Puede incluir:  – Expresión justificada a la izquierda.  ancho Ajusta el campo a este ancho según se requiera (los campos que empiezan con un cero delante se ajustan con ceros).  . precisión Ancho máximo del string o los dígitos a la derecha del punto decimal. CONVERSION IMPRIME LA EXPRESION COMO c un solo caracter d número decimal e [–]d.ddddddE[+–]dd f [–]ddd.dddddd g conversión ‘e’ o ‘f’, la menor, con los ceros no significativos suprimidos o número octal no signado s string x número hexadecimal no signado % imprime un ‘%’ sin convertir argumento 5. Los patrones son combinaciones Booleanas arbitrarias ( (, ), !, ||, ) de expresiones relacionales y expresiones regulares. 6. Estas expresiones se agrupan de la siguiente manera: EXPRESIONES OPERADORES SIGNIFICADO relacionales menor que = menor o igual a == igual a
  • 104. JDCM UNIX SVR4 – NA/1 12 != diferente de = mayor o igual a mayor que regulares ~ concuerda !~ no concuerda 7. En una comparación, si ambos operandos son numéricos, se efectúa una comparación numérica de lo contrario, se comparan como cadenas de caracteres. 8. Para forzar una expresión entre un tipo y otro se efectúa lo siguiente: número “” Se concatena un string nulo a un número para forzarlo a ser un string. string + 0 Se adiciona un cero al string para forzarlo a ser numérico. 9. Las expresiones regulares son las utilizadas en ‘egrep’ y dentro de los patrones deben estar circundados por ‘ / ’. 10. Un patrón puede consistir de dos patrones separados por una coma lo cual significa que la acción se realiza entre las líneas donde aparezca el primer patrón y la siguiente ocurrencia del segundo patrón. Se pueden utilizar paréntesis para agrupamiento y ‘ | ’ para las alternativas posibles. 11. Las variables pueden ser escalares, elementos de arreglos o campos, se inicializan con el string ‘null’ o con ‘cero’. 12. Las variables internas son: VARIABLE SIGNIFICADO VALOR POR DEFECTO ARGC Número de argumentos de la línea de comandos – ARGV Arreglo de argumentos de la línea de comandos – FILENAME Nombre del archivo de entrada actual – FNR Número de registro en el archivo actual – FS Separador de campo de entrada blanco y tabulación NF Número de campos en el registro actual – NR Número de registros leídos hasta el momento (# ordinal del registro actual) – OFMT Formato de salida para números %.6g OFS Separador de campo de salida blanco ORS Separador de registro de salida newline RS Separador de registro de entrada newline RSTART Indice del primer caracter verificado por match() – RLENGTH Longitud del string verificado por match() – 13. El comando ‘awk’ posee varias funciones internas a saber: aritméticas 12 , string, de entrada/salida. 14. Funciones aritméticas internas: FUNCION VALOR RETORNADO atan2(y,x) arco tangente de y/x en el rango [–|| , ||] cos(x) coseno de x, con x en radianes exp(x) función exponencial de x int(x) parte entera de x truncada hacia cero log(x) logaritmo natural de x rand(x) número aleatorio entre 0 y 1 sin(x) seno de x, con x en radianes sqrt(x) raíz cuadrada de x srand(x) x es la nueva base para rand() 13 19. Funciones string internas: FUNCION DESCRIPCION gsub(r,s,t) Sustituye ‘ s ‘ por ‘ r ‘ globalmente en el string ‘ t ‘, retorna el número de sustituciones. Si se omite ‘ t ‘, se usa el registro actual. index(s,t) Retorna la posición del string ‘ t ‘ en ‘ s ‘ o cero si no ocurre. length(s) Retorna la longitud de ‘ s ‘ o de la línea completa si no hay argumento. match(s,re) Retorna la posición en ‘ s ‘ donde ocurre ‘ re ‘ 14 o cero si no ocurre. RSTART se fija a la posición de inicio (la misma que el valor retornado) y RLENGTH se fija a la longitud del string verificado. split(s,a,re) Parte ‘ s ‘ en un arreglo ‘ a ‘ según ‘ re ‘ 15, retorna el número de campos. sprintf(fmt,expr–list) Retorna la ‘expr–list’ formateada de acuerdo al string de formateo ‘fmt’, sin imprimirla. sub(r,s,t) Sustituye ‘ s ‘ por el primer ‘ r ‘ en el string ‘ t ‘, retorna el número de sustituciones. Si se omite ‘ t ‘, se usa el registro actual. substr(s,p,n) Retorna el substring de ‘ s ‘ de longitud ‘ n ‘ empezando en la posición ‘ p ‘. Si se omite ‘ n ‘, retorna el sufijo de ‘ s ‘ empezando en la posición ‘ p ‘. 20. Funciones de entrada/salida: FUNCION DESCRIPCION FIJA close(filename) Cierra el archivo denominado ‘filename’. – cmd | getline 16 Entuba la salida de ‘cmd’ a ‘getline’, cada llamada sucesiva a ‘getline’ retorna la siguiente línea de salida de ‘cmd’. $0,NF
  • 105. JDCM UNIX SVR4 – NA/1 13 getline Fija $0 al siguiente registro de entrada del archivo de entrada actual. $0,NF,NR,FNR getline var Fija la variable ‘var’. var,NR,FNR getline file Fija $0 al siguiente registro de ‘file’. $0,NF getline varfile Fija ‘var’ a partir del siguiente registro en ‘file’. var cmd | getline var Fija ‘var’ a partir de la línea de salida de ‘cmd’. var system(cmd) Ejecuta ‘cmd’ y retorna su estado de salida. – 03. Ejemplos (01) { print $2,$1 } Imprime los dos primeros campos en orden inverso. (02) BEGIN { FS=”,[t]* | [t]+” } { print $2,$1 } Similar a lo anterior, pero con los campos de entrada separados por coma y/o blancos y tabulaciones. (03) { s+=$1 } END { print “suma es “,s,” promedio es “,s/NR } Suma la primera columna, imprime la suma y el promedio. (04) { for (i=NF;i0;––i) print $i } Imprime los campos en orden inverso. (05) /start/,/stop/ Imprime todas las líneas que se encuentran entre los pares start/stop. (06) $1 != prev { print; prev=$1 } Imprime todas las líneas cuyo primer campo sea diferente del anterior. (07) { print $NF } Imprime el último campo de cada línea de entrada. (08) NR=10 Imprime la línea de entrada número 10. (09) { line=$0 } END { print line } Imprime la última línea de entrada. (10) NF != 4 { print $0, “no tiene 4 campos”} Imprime las líneas de entrada que no tienen 4 campos. (11) { nc=nc + length($0) } END {print nc + NR } Imprime el número total de caracteres de entrada (adicionanado NR incluímos el número total de newlines). Asumimos el siguiente archivo de muestra: NOMBRE AREA POBLACION CONTINENTE USSR 8650 262 Asia Canada 3852 24 North America China 3692 866 Asia USA 3615 219 North America Brazil 3286 116 South America Australia 2968 14 Oceania India 1269 637 Asia Argentina 1072 26 South America Sudan 968 19 Africa Argelia 920 18 Africa (12) { print $1 $2 } Muestre los nombres de países y su continente de origen (13) maxpop $3 { maxpop = $3; country = $1 } END { print country, maxpop } Encuentra el país con la población mayor. (14) { for ( i = 1; i NF; i++ ) print $i } Imprime todos los campos de entrada uno por línea. (15) /start/ { do { getline x } while ( x !~ /stop/) } { print } Imprime todas aquellas líneas que no están comprendidas entre ‘start’ y ‘stop’. (16) /Asia/ { pop[”Asia”] += $3 } /Africa/ { pop[”Africa”] += $3 } END { print “Población asiática en millones: “, pop[”Asia”] { print “Población africana en millones es: “, pop[”Africa”] } Acumula la población total de Asia y Africa en el arreglo asociativo ‘pop’.
  • 106. JDCM UNIX SVR4 – NA/1 14 (17) $3 100 Selecciona líneas donde el tercer campo es mayor a 100. (18) $1 = “S” Selecciona líneas que empiezen con las letras comprendidas en el rango [S–Z].. (19) $4 !~ /Asia/ { print $1 } Imprime el primer campo de todas las líneas cuyo cuarto campo no sea igual a “Asia”. (20) $4 == “Asia” $3 500 Selecciona todas las líneas en las que el cuarto campo es “Asia” y el tercer campo es mayor a 500. (21) $4 == “Asia” || $4 == “Africa” Selecciona todas las líneas con “Asia” o “Africa” en el cuarto campo. (22) $4 ~ /^(Asia|Africa)$/ Similar al anterior. (23) FNR == 1, FNR == 5 { print FILENAME, $0 } Imprime los cinco primeros registros de cada archivo de entrada con el nombre de archivo delante. (24) { printf “%10s %6.1fn”, $1, 1000 * $3/$2 } Imprime el nombre de cada país y su densidad de población (según el archivo “países”). (25) $4 == “Asia” { pop += $3; ++n } Calcula el número de países asiáticos y su población total. (26) { gsub(/USA/,”Unisted States”); print } Reemplaza las ocurrencias de “USA” por “United States”. (27) BEGIN { FS = OFS = “t” } { $5 = 1000 * $3/$2; print } Crea un quinto campo con la densidad poblacional. (28) { print length($0),$0 }/ Imprime cada registro, precedido por su longitud. (29) length($1) max { max = length($1); name = $1 } END { print name } Imprime el nombre de país más largo. (30) { $1 = substr($1,1,3); print } Abrevia los nombres de país en el archivo “países” a sus tres primeras letras. Ejemplos de sentencias ‘printf’ con su salida correspondiente: printf “%d”,99/2 49 printf “%e”,99/2 4.950000e+01 printf “%f”,99/2 49.500000 printf “%6.2f”,99/2 49.50 printf “%g”,99/2 49.5 printf “%o”,99 143 printf “%060”,99 000143 printf “%x”,99 63 printf “|%s|”,”Enero” |Enero| printf “|%10s|”,”Enero” | Enero| printf “|%–10s|”,”Enero” |Enero | printf “|%.3s|”,”Enero” |Ene| printf “|%10.3s|”,”Enero” | Ene| printf “|%–10.3s|”,”Enero” |Ene | printf “%%” % Otros ejemplos: (31) $2 !~ /^[0–9]+$/ Imprime todos los registros en los que el segundo campo no es un string de uno o más dígitos. (32) /(apple|cherry) (pie|tart)/ Encuentra las líneas que contienen uno de los cuatro substring siguientes: apple pie apple tart cherry pie cherry tart (33) index(“banana”, “an”) Retorna el dígito ‘2’. (34) { if (match($0,/i.?a/)) print RSTART,RLENGTH,$0 } Encuentra la primera ocurrencia de la letra ‘ i ‘, seguida de a lo más un caracter, seguida de una letra ‘ a ‘ en un registro. (35) x = sprintf (“%10s %6d”,$1,$2) Asigna a ‘ x ‘ el string producido al formatear los valores de $1 y $2 como un string de 10 caracteres y un número decimal en un campo de 6 de ancho de modo que ‘ x ‘ se pueda utilizar en cálculos subsecuentes.
  • 107. JDCM UNIX SVR4 – NA/1 15 (36) { s = s substr($1,1,3) “ “ } END { print s } Concatenación de strings (escribe uno tras otro en una expresión). (37) function fact(n) { if (n = 1) return 1 else return n * fact(n–1) } { print $1 “! es “ fact($1) } Define y prueba la función factorial recursiva usual. (38) $1 == “#include” { gsub(/[”]/,””,$2) system(“cat”,$2) } Llama al comando ‘cat’ para imprimir el archivo nombrado en el segundo campo de cada registro de entrada cuyo primer campo es ‘#include’, luego de eliminar cualquier , , “ que pudieran estar presentes. (39) $3 100 { print $1, $3 “bigpop” } $3 = 100 { print $1, $3 “smallpop” } Imprime todas las líneas donde la población (tercer campo) es mayor a 100 en un archivo “bigpop” y otras líneas en “smallpop”. 17 COMANDOS ADICIONALES 01. Comando ‘basename’ Propósito: Muestra la porción final del nombre de un archivo. Sintaxis: /bin/basename {pathname} Consideraciones: 1. Borra cualquier prefijo que termina en ‘ / ’ del pathname y muestra el resultado en la salida estándar. Normalmente es utilizado en procedimientos shell dentro de las marcas de sustitución. Ejemplo: $ nombre=`basename /usr/tmp/file1` $ echo $nombre file1 02. Comando ‘dirname’ Propósito: Muestra la porción inicial del nombre completo de un archivo. Sintaxis: /bin/dirname {pathname} Consideraciones: 1. Muestra todo excepto el último nivel de ‘pathname’ en la salida estándar. 2. Normalmente es utilizado en procedimientos shell dentro de las marcas de sustitución. Ejemplo: $ nombre=`dirname /usr/tmp/file1` $ echo $nombre /usr/tmp 03. Comando ‘echo’ Propósito: Mostrar argumentos.
  • 108. JDCM UNIX SVR4 – NA/1 16 Directorio de residencia: Interno al shell. Sintaxis: echo [–n] {argumentos} Opciones:  n Imprime una línea sin ‘newline’. Consideraciones: 1. Escribe sus argumentos separados por espacios en blanco y terminados por newline en la salida estándard. 2. Es útil para producir diagnósticos en archivos de comando y para enviar datos. 3. Entiende las siguientes convenciones de ESCAPE: b Backspace. c Imprime la línea sin newline. f Form–feed. n Newline. r Carriage return (CR). t Tab. v Vertical tab. Backslash. 0n Donde ‘n’ es el caracter de 8 bits que es representado en forma octal. Ejemplo: $ echo “CUIDADO:007” 04. Comando ‘expr’ Propósito: Evaluar argumentos como una expresión. Directorio de residencia: Interno al shell. Sintaxis: expr {argumentos} Consideraciones: 1. Los argumentos se toman como una expresión. 2. Luego de la evaluación, el resultado se escribe a la salida estándard. 3. Los términos de la expresión deben separarse por blancos. 4. Los caracteres especiales al shell deben estar precedidos por ‘ ’. 5. Un valor cero se representa por ‘ 0 ’. 6. Los argumentos de valor entero pueden estar precedidos por signo. 7. Los caracteres que lo requieran están prece–didos por ‘ ’. 8. Los operadores de igual nivel están agrupa–dos por ‘ { } ’. 9. Se detallan los siguientes operadores: expr1 | expr2 Retorna ‘expr1’ si este no es nulo o cero de lo contrario, retorna ‘expr2’. expr1 expr2 Retorna ‘expr1’ si ni ‘expr1’ ni ‘expr2’ son nulo o cero, de lo contrario retorna cero. expr1 { =,,=,,=,!= } expr2 Retorna el resultado de una comparación entera si ambos argumentos son enteros de otro modo, retorna el resultado de una comparación lexicográfica. expr1 { +,– } expr2 Adición o substracción de argumentos de valor entero. expr1 { *,/,% } expr2 Multiplicación, división, o resto de argumentos de valor entero. expr1 : expr2 18 Retorna el número de caracteres encontrados (o cero si falla). 19 10. Como efecto lateral de la evaluación de expresiones, ‘expr’ retorna los siguientes valores de salida: 0 Si la expresión no es nula ni cero. 1 Si la expresión es nula o cero. 2 Para expresiones inválidas.
  • 109. JDCM UNIX SVR4 – NA/1 17 Ejemplo: $ a=`expr $a + 1` $ b=`expr $VAR : ‘.*’` $ a=alfaromeo $ b=`expr $a : ‘alfa(.*)’` $ cat depath expr $1 : ‘.*/(.*)’ | $1 20 $ depath /usr/bin/ana/file4 file4 05. Comando ‘getopts’ Propósito: Individualiza las opciones de comando. Directorio de residencia: Interno al shell. Sintaxis: getopts string de opciones’ nombre {argumentos} Consideraciones: 1. Lo utilizan los procedimientos shell para individualizar los parámetros posicionales a fin de chequear opciones válidas. 2. El ‘string de opciones’ debe contener las letras de opciones que se deben reconocer. 3. Si una letra está seguida por “ : ”, se espera que la opción tenga uno o más argumentos los que deben estar separados por espacios en blanco. 4. Cada vez que se invoca, el comando pone la siguiente opción en la variable ‘nombre’ y el índice del siguiente argumento a procesarse en la variable shell OPTIND. Cada vez que se invoca el shell o se invoca un procedimiento shell, la variable OPTIND se inicializa a 1. 5. Cuando una opción requiere un argumento_opción, el comando lo coloca en la variable shell OPTARG. Si se encuentra una opción inválida, se coloca ‘ ? ’ en ‘nombre’. 6. Cuando se encuentra el final de las opciones, el comando termina con un estado de salida diferente de cero. Muestra un mensaje de error en el error estándar cuando encuentra una opción no incluída en el string de opciones. Ejemplo: El siguiente fragmento de programa puede tomar las opciones ‘a’, ‘b’ y ‘o’ la cual requiere un argumento_opción. while getopts abo: c do case $c in a|b) FLAG=$c ;; o) OARG=$OPTARG ;; ?) echo $USAGE exit 2 ;; esac done shift `expr $OPTIND – 1` el cual acepta lo siguiente: $ cmd –a –b –o “xxx z yy” file $ cmd –ab –o xxx,z,yy file $ cmd –ab –o “xxx z yy” file $ cmd –o “xxx z yy” –b –a file 06. Comando ‘compress’ Propósito: Comprime archivos. Sintaxis: /usr/bin/compress nombre Consideraciones: 1. Intenta almacenar los archivos especificados en forma comprimida. Cuando sea posible, el archivo ‘nombre’ es reemplazado por un archivo empaquetado: ‘nombre.z’. Utiliza el código de Huffman (redundancia mínima) en base a su aplicación byte por byte.
  • 110. JDCM UNIX SVR4 – NA/1 18 2. La cantidad de compresión obtenida depende del tamaño del archivo de entrada y de la distribución de frecuencia de los caracteres. Retorna un valor que es igual al número de archivos que no se pudieron comprimir. 3. El empaquetado no ocurre en los siguientes casos:  El archivo parece ya empaquetado.  El nombre de archivo tiene más de 12 caracteres.  El archivo tiene links, no puede ser abierto, ya existe, o es un directorio, o el archivo con extensión ‘ z ’ no puede crearse.  No se ahorran bloques de almacenamiento en disco al empaquetar.  Durante el proceso ocurre un error de I/O. Ejemplo: $ ls / /tmp/p1 $ pack –f /tmp/p1 pack: /tmp/p1: 16.6% Compression 07. Comando ‘script’ Propósito: Realiza un log de la sesión. Sintaxis: /usr/local/bin/script [–aq] file Opciones:  a Si el archivo ‘file’ existe, le adiciona información.  q Los mensajes de apertura y cierre son suprimidos, al igual que las marcas de tiempo de inicio y final en la creación del archivo ‘file’. Consideraciones: 1. Genera un log de la interacción del usuario con el sistema. Fuerza un shell con la entrada y salida estándar redireccionadas. Para terminar se presiona CTRL–D. 2. No hay forma de enviar un fin de archivo al shell sin terminar el comando ‘script’. Se recomienda no iniciar subshells desde una sesión ‘script’ ya que pueden tener problemas o simplemente no trabajan. 3. Se recomienda no trabajar con programas que usen la entrada estándard para examinar y controlar el terminal del usuario como ‘ps’, ‘stty’, ‘tset’, ‘tty’, ‘ex’, y ‘vi’ ya que pueden tener problemas o simplemente no trabajan. Ejemplo: $ script –q /tmp/file_user01 08. Comando ‘sum’ Propósito: Muestra el checksum y la cuenta de bloques de un archivo. Sintaxis: /bin/sum file Consideraciones: 1. Calcula y muestra un checksum de 16 bit para el archivo nombrado e imprime el número de bloques en el archivo. Ejemplo: $ sum file1 $ sum /bin/ed 40198 111 /bin/ed
  • 111. JDCM UNIX SVR4 – NA/1 19 09. Comando ‘tee’ Propósito: Transcribe la entrada estándard a la salida estándard. Sintaxis: /usr/bin/tee [–ia] file Opciones:  i Ignora interrupciones.  a Causa que la salida se adicione al archivo ‘file’ en lugar de reemplazarlo. Consideraciones: 1. Adicionalmente, crea copias en el archivo ‘file’. Ejemplo: $ ls | tee /dev/tty102 $ who | tee file1 | wc 10. Comando ‘timex’ Propósito: Mide el tiempo de un comando, reporta la actividad del sistema y la información procesada. Sintaxis: /usr/bin/timex comando Consideraciones: 1. El ‘comando’ dado se ejecuta y se reporta en segundos el tiempo empleado, tiempo de usuario y tiempo de sistema gastados durante la ejecución. Su salida se escribe en la salida estándard. Ejemplo: $ timex ls –lR ––– –– –––– –– – –– – – – –– –– – – –– –– – ––– –– –––– –– – –– – – – –– –– – – –– –– – . . . ––– –– –––– –– – –– – – – –– –– – – –– –– – ––– –– –––– –– – –– – – – –– –– – – –– –– – ––– –– –––– –– – –– – – – –– –– – – –– –– – real 0.94 user 0.04 sys 0.16 11. Comando ‘tput’ Propósito: Inicializa un terminal o consulta la base de datos de información del terminal terminfo. Sintaxis: /usr/bin/tput [init/reset][capname][params] Opciones: init Se obtienen los strings de inicialización del terminal (is1, is2, is3, if, iprog). reset Se obtienen los strings de reset del terminal (rs1, rs2, rs3, rf). capname Indica el atributo de la base de datos terminfo. params Si el atributo es un string que toma parámetros, éstos se insertan en el string. Consideraciones: 1. Este comando utiliza la base de datos terminfo para que los valores de las capacidades dependientes del terminal estén disponibles al shell.
  • 112. JDCM UNIX SVR4 – NA/1 20 2. Se recomienda testear el código de salida para asegurarse que es cero antes de utilizar el valor retornado. Ejemplo: $ tput init Inicializa el terminal de acuerdo al tipo de terminal en la variable ambiental TERM. $ tput cup00 Envía la secuencia para mover el cursor a la fila 0, columna 0. $ tput clear Envía la secuencia de clear_screen al terminal. $ tput smso Envía la secuencia correspondiente a bold al terminal y causa que el mismo trabaje en este nuevo estado. 12. Comando ‘tr’ Propósito: Traduce caracteres. Sintaxis: /usr/bin/tr [–ds] string1 string2 Opciones:  d Borra todos los caracteres de entrada en el ‘string1’.  s Resume todos los strings de caracteres de salida repetidos que están en ‘string2’ a caracteres simples, según el caracter dado en ‘string1’. Consideraciones: 1. Copia la entrada estándard a la salida estándard con sustitución o borrado de los caracteres seleccionados. 2. Los caracteres de entrada encontrados en ‘string1’ se mapean en sus correspondientes de ‘string2’. 3. Las siguientes convenciones de abreviación se pueden utilizar para introducir rangos de caracteres o caracteres repetidos dentro de los string:  [a – z] Rango de caracteres entre ‘ a ’ y ‘ z ’, inclusive.  [a * n] Indica ‘ n ’ repeticiones del caracter ‘ a ’. 4. Se pueden utilizar representaciones en octal (001 – 377). 5. Los caracteres especificados se buscan y traducen en unidades de caracter, no bytes. 6. Algunos caracters importantes y su representación octal: bell 7 bksp 10 tab 11 newline 12 formfeed 14 CR 15 Ejemplo: $ ls –C /tmp/p $ tr –s “ “ “X” /tmp/p $ tr ´[a-z]´ ´[A-Z]´ intro letras minúsculas a mayúsculas $ tr -s ´:´ ´11´ : en tabulaciones, reemplazando múltiples tabulaciones por una sola $ tr -s ´ ´ ´ ´ archivo compacta muchos espacios utilizando la opción -s y especificando un solo espacio como primer y segundo argumento
  • 113. JDCM UNIX SVR4 – NA/1 21 CONFIGURACIONES MANEJO DE USUARIOS Y GRUPOS – REPASO 01. Archivo ‘/etc/group’ vm : : 100 : suzie, woody, tom, bill, lynda 1 2 3 4 Donde: 1. Nombre del grupo. 2. Password del grupo (no utilizado). 3. Número de identificación del grupo (GID). 4. Lista de los miembros del grupo. 02. Comando ‘newgrp’ 1. Cambia temporalmente la identificación del grupo primario. Coloca nombre de grupo diferente a los archivos recientemente creados. 2. Cuando se le utiliza con un guión ( – ), el ambiente cambia como si el usuario hubiera ingresado nuevamente i.e., nuevo login pero en el nuevo grupo. 3. Nuevas ejecuciones del shell siempre reemplazan el shell actual. Sólo se retienen las variables exportadas y las que no han sido exportadas se resetean. 4. Ubicamos el grupo con el que estamos trabajando con el comando ‘id’. 03. Archivo ‘/etc/passwd’ 1. Controla el acceso al sistema operativo UNIX. Sólo debe ser trabajado por el administrador del sistema. 2. Los password no son mostrados en pantalla. Su longitud debe ser por lo menos tres caracteres aunque sólo son significativos los 8 primeros. Por defecto, esta longitud es de 6 caracteres. 3. Deben contener por lo menos dos caracteres alfabéticos y por lo menos uno numérico o caracter especial. Los password deben diferir del login del usuario, incluyendo formatos reversos o circulares. 4. El password nuevo debe diferir del antiguo en por lo menos 3 caracteres. user1 : x : 130 : 100 : User 1 Id : /home/user1 : /sbin/sh 1 2 3 4 5 6 7 Donde: 1. Nombre del login (usuario). 2. Bandera de password (contenidoa en el archivo ‘/etc/shadow’). 3. Número de identificación del usuario (Entre 0 y 99 están reservados para la administración del sistema). 4. Número de identificación de grupo (según el archivo ‘/etc/group’).
  • 114. JDCM UNIX SVR4 – NA/1 22 5. Campo de comentario. 6. Directorio base. 7. Shell o archivo ejecutable: Shell Pathname Bourne o ATT /sbin/sh restringido (Bourne) /sbin/rsh ”C”–shell o Berkeley /bin/csh Korn shell /usr/bin/ksh restringido (Korn) /usr/bin/rksh 04. Archivo ‘/etc/default/passwd’ 1. Contiene información sobre la vigencia de los password: PASSLENGTH Longitud mínima para el password del usuario. MINWEEKS Mínimo número de semanas antes que el usuario esté permitido de cambiar de password. MAXWEEKS Máximo número de semanas antes que un usuario pueda cambiar su password. 21 ALGORITHM STANDARD: Algoritmo estándar. PROACTIVE: Versión más elaborada. GENERATED: El usuario debe escoger un password generado por la máquina. WARNWEEKS Número de semanas antes que un password de un usuario específico expire y se envíe un mensaje de advertencia en el siguiente intento de acceso. 05. Archivo ‘/etc/shadow’ 1. Archivo de claves del sistema. user1 : cPsWY.RtfiyJA : 7964 : 0 : 168 : 7 : 120 : 10/1/92 : 1 2 3 4 5 6 7 8 9 Donde: 1. Nombre del login (igual al ingresado en el archivo ‘/etc/passwd’). 2. Password encriptado. 3. Ultimo cambio: número de días esde Enero 1, 1970 hasta la última vez en que el password ha cambiado. Es generado por el sistema. 4. Mínimo: mínimo número de días antes que un usuario pueda cambiar su password. 5. Máximo: número máaximo de días antes que se requiera un cambio en el password. 6. Advertencia: Número de días en que se advierte al usuario antes que expire el password. 7. Inactivo: número de días de inactividad permitida. 8. Expiración: fecha absoluta pasada la cual el login no funciona. 9. Flag: reservado para uso futuro. ARCHIVOS Y DIRECTORIOS 01. Archivo ‘/etc/inittab’ Propósito: Es una tabla de inicialización que determina lo que hay que realizar en un nivel dado. Características: 1. La tabla de inicialización contenida en este archivo instruye al utilitario “/etc/init” del Sistema Operativo UNIX a que realice algunas operaciones durante los niveles de ejecución especificados (llamados también “estados de ejecución”, “niveles de inicio”, “modos”).
  • 115. JDCM UNIX SVR4 – NA/1 23 2. Una entrada en este archivo tiene el formato siguiente: Label de entrada:Nivel de ejecución:acción:cmds y argumentos Donde: Etiqueta de entrada (label), identifica una entrada única en el archivo inittab. Nivel de ejecución Identifica el nivel de inicialización en que se operará el proceso en particular: 0 Modo mono–usuario, usado para mantenimiento del sistema y funciones administrativas. s/S Modo mono–usuario, no desmonta los filesystem pero se requiere recargar el sistema. 1 Modo mono–usuario, no desmonta los filesystem y puede retornar al modo multi–usuario sin recargar el sistema. 2 Modo multi–usuario normal, donde están disponibles la mayoría de recursos. 3 Es similar al modo 2 pero con características adicionales para implementar una red RFS. 4 Nivel de ejecución definido por el usuario y utilizado para adecuar la operación del sistema a necesidades particulares. 5 Detiene el sistema. 6 Lleva el sistema a un estado en el cual automáticamente vuelve a cargar el sistema. Acción Determina la manera de cómo se ejecutará el proceso el utilitario “init”. sysinit Especifica que el programa indicado debe ejecutarse antes de tratar de accesar a la consola. Debe ejecutar y esperar a que concluya antes de pasar a la siguiente línea. bootwait Inicia el proceso durante la inicialización inmediatamente después que el sistema ha cargado. El comando ‘init’ inicia el proceso nombrado en el campo de comando y espera que termine. No reinicia el proceso. initdefault Especifica el nivel inicial de ejecución. No se utiliza el campo de proceso para esta acción sin embargo, necesariamente deben estar presentes los dos puntos que separan los campos de proceso y acción. powerfail Ejecuta el proceso cuando el sistema pierde energía. Si se conecta un UPS al sistema, se notifica a los usuarios que el UPS ha entrado a funcionar. wait Cuando se cambian los niveles de ejecución, el comando ‘init’ inicia el proceso y espera a que termine. once Ejecuta el comando sólo una vez. respawn Ejecuta el comando y lo reinicia cada vez que termina. off No se ejecuta el comando. Comando Proceso ejecutable que el utilitario init ejecuta. Ejemplo: # pg /etc/inittab sc::sysinit:/sbin/setcons cc::sysinit:/sbin/chkconsole ap::sysinit:/sbin/autopush –f /etc/ap/chan.ap ak::sysinit:/sbin/wsinit 1/etc/wsinit.err 21 ck::sysinit:/sbin/setclk /dev/console /dev/sysmsg 21 bchk::sysinit:/sbin/bcheckrc /dev/console /dev/sysmsg 21 on::sysinit:/sbin/all.online /dev/console /dev/sysmsg 21 is::2:initdefault pf::powerfail:/etc/powerfail /dev/console /dev/console 21 r0::0:wait:/sbin/rc0 off 1/dev/sysmsg 21 /dev/console r1::1:wait:/sbin/rc1 1/dev/sysmsg 21 /dev/console r2::23:wait:/sbin/rc2 1/dev/sysmsg 21 /dev/console r3::3:wait:/sbin/rc3 1/dev/sysmsg 21 /dev/console r5::5:wait:/sbin/rc0 reboot 1/dev/sysmsg 21 /dev/console r6::6:wait:/sbin/rc0 reboot 1/dev/sysmsg 21 /dev/console sd:0:wait:/sbin/uadmin 2 0/dev/sysmsg 21 /dev/console fw:5:wait:/sbin/uadmin 2 2/dev/sysmsg 21 /dev/console
  • 116. JDCM UNIX SVR4 – NA/1 24 rb:6:wait:/sbin/uadmin 2 1/dev/sysmsg 21 /dev/console li:23:wait:/usr/bin/ln /dev/systty /dev/syscon /dev/null 21 sc:234:respawn:/usr/lib/saf/sac –t 30 co:12345:respawn:/usr/lib/saf/ttymon 22 –g –p “Console login: “ –d /dev/console –l console tm:123:wait:/sbin/portsetup 23 /dev/null 21 02. Directorio ‘/dev’ 1. Determina el camino lógico hacia un dispositivo (pathname). 2. Diferencia dos tipos de manejadores (drivers):  Bloqueados.  Caracter (raw). 3. Dispositivos:  Poseen un número mayor y un número menor asignado.  Los números mayores apuntan a una rutina manejadora de dispositivo en el kernel.  Los números menores apuntan a un puerto específico (o canal), controlado por una rutina manejadora. 03. Archivo ‘/etc/ttydefs’ 1. Reemplaza al archivo ‘/etc/gettydefs’ de versiones anteriores. 2. Define las disciplinas de los puertos. 3. Consta de una disciplina base que es buscada por el /etc/getty. 4. Esta disciplina base posee las características generales con las cuales se fijan los atributos de los terminales o impresoras. 5. Posee los siguientes campos: CAMPOS DESCRIPCION EJEMPLO ttylabel El monitor ttymon busca en este archivo una etiqueta tty que concuerde con la que ha sido configurada para los puertos que este monitor maneja. 9600A: flags iniciales Similar a su contraparte en el archivo ‘/etc/gettydefs’ i.e., fija los parámetros stty iniciales para el terminal. brkint hupcl icrnl icanon opost onlcr tab3 ignpar ixon ixany istrip echo flags finales Contiene los parámetros a fijarse luego de requerirse una conexión al ‘ttymon’ y justo antes de invocar al servicio de login. brkint hupcl icrnl icanon opost onlcr tab3 ixon ixany Autobaud Es una opción de velocidad de la línea y puede utilizarse en lugar de fijar la velocidad en baudiso.el ‘ttymon’ determina la velocidad de la línea al analizar el primer CR ingresado y fija la velocidad según convenga. Según el ejemplo, está habilitado 24 A: Siguiente etiqueta Similar función a la de su equivalente en el archivo ‘/etc/gettydefs’. Si el usuario presiona la tecla BREAK en el prompt del login, ‘ttymon’ busca esta etiqueta tty como alternativa. 4800 04. Archivo ‘/etc/ttytype’ 1. Contiene las entradas para el tipo de terminal (TERM) por defecto (ANSI) para los puertos tty. 2. Tiene la siguiente estructura: Definición TERM : Puerto Donde: Puerto Nombre relativo del archivo especial asociado con el terminal, según se encuentra en ‘/dev/term’. TERM Ientificación del terminal según el sistema TERMINFO. 05. Archivo ‘/usr/lib/terminfo’ 1. Es una base de datos conteniendo las capacidades de los terminales.
  • 117. JDCM UNIX SVR4 – NA/1 25 2. Define las características de los terminales. 3. Es usado por el editor ‘vi’ y algunas otras aplicaciones que lo requieran. 4. Brinda flexibilidad para crear y adecuar nuevas características de terminal. 5. El comando tic compila las nuevas definiciones de terminal. 6. El comando infocmp permite comparar diferentes archivos de descripción de terminales .e imprimir un fuente ASCII a partir de un archivo terminfo. 7. El comando captoinfo traduce el antiguo formato /etc/termcap a un fuente capaz de ser compilado como archivo terminfo. EL SISTEMA SPOOL 01. Introducción 1. Características:  Soporta impresoras paralelas y seriales diversas.  Encola los trabajos de impresión.  Iniciado automáticamente al ingreso a modo multi–usuario. 2. Permite definir programas de interface (filtros). 3. Permite seleccionar el tipo de impresora (usando la base de datos ‘terminfo’). 4. Permite fijar el tipo de archivos que se pueden imprimir (tipo de contenido). 5. Puede seleccionar el tipo de caracter, formato y margarita (daisy–wheel). 6. Permite habilitar/deshabilitar el encabezado. 7. Posee un sistema de alerta y recuperación en caso de errores. 8. Maneja prioridades de trabajo. 9. Permite restringir el acceso de usuarios a la(s) impresora(s). 10. Archivos de configuración:  Ubicados bajo los directorios: /etc/lp y /var/spool/lp. Figura No. 5: Directorios y archivos ‘lp’ 02. Directorio ‘/etc/lp’ 1. Contiene archivos y directorios que interactúan con las impresoras seriales y/o paralelas conectadas al sistema. 2. Directorios incluídos:  forms:  Categoriza los tipos de formas (formatos) que pueden usarse para una impresora en particular.  Se debe definir el tipo de forma para una impresora dada, si es aplicable.
  • 118. JDCM UNIX SVR4 – NA/1 26  Ejemplo: page length: 66 page width: 80 number of pages: 1 line pitch: 6 character pitch: 10 character set choice: any ribbon color: any alignment pattern: simple  interfaces:  Identifica las impresoras definidas en el sistema.  Cuando una impresora se adiciona al sistema, una copia del modelo de la impresora (del directorio ‘/usr/lib/lp/model’ 25 ) se coloca en el directorio interfaces bajo el nombre con el que se conocerá esa impresora.  Se le usa para:  Inicializar el puerto de la impresora y la impresora.  Imprimir la página de cabecera.  Ejecutar el filtro que prepara el contenido del archivo para imprimit y lo imprime.  Administra las fallas de la impresora las cuales usualmente son detectadas por el filtro.  Deje la impresora para otro trabajo de impresión.  class:  Categoriza las impresoras en grupos de impresión equivalentes. Cuando se adiciona una impresora al sistema, se puede especificar que ésta será miembro de una clase específica.  Esto significa que todas las impresoras laser del sistema pueden definirse como la clase “laser” de modo que cualquier requerimiento de los usuarios será servido por el primer miembro disponible de esta clase. 3. Archivos adicionales de configuración:  Systems:  Contiene parámetros asociados con los sistemas que se utilizan para impresión remota.  default:  Identifica el nombre de la impresora que el sistema utiliza normalmente.  printers:  Es un directorio y se utiliza para contener un directorio (con el mismo nombre de la impresora definida) por cada impresora adicionada al sistema.  En cada uno de estos directorios se encuentran los siguientes archivos: alert.sh Controla el mecanismo de alerta por fallas. Por defecto, cualquier problema con sus trabajos de impresión se envían como mensaje al superusuario (via correo). alert.vars Contiene los estados de alerta 0 (estado de salida) y 1 (salida cuando ocurre algún error). configuration Suministra información de configuración de la impresora. user.deny Para denegar acceso de los usuarios listados aquí a esta impresora.  Ejemplo: Banner: on:always Content types: simple Device: /dev/term/17 Interface: /usr/lib/lp/model/standard Printer type: AP9215–e  pwheels:  Lista las margaritas para la impresora específica, si es aplicable. No es usado ya en el SVR4. 03. Directorio ‘/var/spool/lp’ 1. Contiene directorios que interactúan con el servicio de impresión LP. 2. Directorios incluídos:  system:  Contiene un archivo ‘pstatus’ que provee información del estado inicial de la impresora.  El archivo ‘cstatus’ provee información de estado de las impresoras que pertenecen a una clase.  SCHEDLOCK:
  • 119. JDCM UNIX SVR4 – NA/1 27  Archivo de bloqueo para prevenir que se ejecuten varios manejadores de impresión.  requests:  Contiene un directorio para cada sistema remoto que tiene requerimientos de impresión.  Cada archivo en estos directorios continene la identificación de la petición de impresión (request_id) que consiste en el nombre de la impresora y su número de trabajo asignado.  tmp:  Contiene un subdirectorio por cada sistema conocido por su Servicio de Impresión.  Cada uno de etos subdirectorios contiene uno o dos archivos por cada trabajo de impresión: el número de secuencia del trabajo de impresión seguido por un guión y ya sea un cero (0) o un uno (1).  El 0 indica que el archivo contiene los datos de control para el requerimientos de impresión.  El 1 indica que el archivo contiene una copia del contenido del archivo a imprimirse siempre y cuando haya sido enviado con la opción –c.  Ejemplo: C 1 número de copias D laser1 impresora destino F /etc/motd nombre del archivo a imprimir P 20 prioridad T simple tipo de contenido U root usuario que envía el trabajo S 0000 código de estado 04. El Utilitario ‘lpadmin’ 1. Permite adicionar impresoras. 2. Procedimiento para adicionar impresoras:  Determine el archivo modelo apropiado para la impresora que desea adicionar al sistema. Si no existe, debe crearlo.  Verifique que el puerto tty esté configurado con lo siguiente: Propietario: lp Grupo: sys Permisos: 0600  Adicione la impresora utilizando los comandos: $/usr/lib/lpadmin –pprinter –v/dev/ttyxxx –mssp31 $/usr/lib/lpadmin –dprinter (opcional) $/usr/lib/lpadmin –pprinter –cdraft (opcional) donde: pprinter Nombre de la impresora que se adiciona. v/dev/ttyxxx El puerto tty al cual se conecta la impresora serial. Para las impresoras paralelas los puertos tty son lp0, lp1, etc. mssp31 Modelo de la impresora que se usará como interface. dprinter Define la impresora por defecto del sistema. cdraft Define que la impresora recientemente configurada es miembro de la clase draft. 3. Otras opciones: T Tipo de impresora, según la base de datos terminfo. Por defecto es ‘unknown’. I Tipo de contenido por ejemplo, troff, otroff, tex, plot, raster, cif, fortran, postscript, simple. o ’banner/nobbaner’ Encabezado activado/desactivado. M Opción para indicar montaje. Se usa con las opciones ‘ S ’ y ‘ f ’. S ‘margarita’ Indica qué margarita se va a montar. f ‘formato’ Indica qué formato se va a trabajar. o ‘cpi’ El pitch a utilizarse. o ‘length’ Longitud de página. o ‘tamaño’ Tamaño de carcter. F ‘opciones’ Recuperación por fallas. Las ‘opciones’ pueden ser: CONTINUE, BEGINNING, WAIT. A ‘comando’ Alerta por fallas. El ‘comando’ puede ser cualquier, con opciones y argumentos. u ’allow/deny: lista’ Permisos/restricciones de uso para los usuarios en la ‘lista’. s ‘sys_name’ Impresora remota que trabaja con el sistema de nombre ‘sys_name’. 4. Instruímos la impresora para que acepte trabajos:
  • 120. JDCM UNIX SVR4 – NA/1 28 accept printer 5. Para habilitar la impresora (en línea): enable printer 6. Para verificar que la adición de la impresora esté correcta: lpstat –t 7. Para verificar las configuraciones actuales de una impresora: lpstat –p printer_id –l 8. Para remover una impresora: /usr/lib/lpadmin –xprinter 05. Comando ‘lpusers’ Propósito: Manejo de prioridades de impresión. Sintaxis: /usr/lib/lpusers [–ld] [–q ‘prioridad’] [–u ‘usuario’] Opciones:  l Examina el nivel de prioridad de todos los usuarios  d Fija la prioridad por defecto asignada a los trabajos enviados sin prioridad. Consideraciones: 1. El administrador del sistema permite fijar los niveles de prioridad (0=mayor hasta 39=menor) para los usuarios y las colas de impresión. 2. Se modifican las prioridades de los trabajos de impresión que esperan ser impresos con el comando: lp [–q ‘nueva_prioridad’] [[–i ‘trabajo’] [–H ‘opción’]]  Donde la ‘opción’ puede ser cualquiera de los siguientes valores de por sí explicativos: HOLD, IMMEDIATE, RESUME. 06. Procesamiento de requerimientos de impresión 1. Un usuario ejecuta un comando ‘lp’. 2. Este requerimiento se canaliza al manejador del spool ‘lpsched’ el cual efectúa un seguimiento a cada requerimiento de impresión y al uso de un filtro ‘lento’ 26 opcional. 3. El programa de interface estándar es el archivo modelo de impresora del directorio ‘/usr/spool/lp/model’ que se define cuando se adiciona la impresora al sistema. La entrada ‘terminfo’ se usa para inicializar la impresora física, así como para traducir los comandos de la impresora para que concuerden con aquellos específicos de la impresora (como fonts, tamaño de página, etc.) 27 . 4. La impresora por defecto, que utiliza un filtro rápido, convierte el archivo del usuario a un formato que puede ser procesado apropiadamente en la impresora.
  • 121. JDCM UNIX SVR4 – NA/1 29 comando 'lp' Servicio de Impresión LP Manejador de spool lpsched Programa de Interface Cola de destino del trabajo de impresión Base de datos terminfo filtro lento opcional impresora por defecto filtro (opcional) Configuración del servicio de impresión Figura No. 6: Proceso de trabajos de impresión
  • 122. JDCM UNIX SVR4 – NA/1 a APENDICES BIBLIOGRAFIA UNIX Networking Stephen Kochan Patrick Wood Hayden Books UNIX System Library UNIX System Administration David Fiedler Bruce Hunter Hayden Books UNIX System Library UNIX Shell Programming Stephen Kochan Patrick Wood Hayden Books UNIX System Library Tricks of the UNIX Masters Russell Sage The Waite Group SAMS UNIX System V Operating System User’s Guide, ATT UNIX System V Release 4 System Administrator’s Guide, ATT NOTAS1 Esto es implícito a la sintaxis para direccionamiento de líneas del editor 'ex' aunque no aparente. Se recomienda analizar el problema y encontrar la forma de aplicar estas herramientas. 2 Las funciones no pueden ser exportadas. 3 Si se omite en estas funciones el caracter ' : ', el shell sólo chequea si existe o no 'parámetro'. 4 Las llaves se requieren sólo cuando el parámetro es seguido por un caracter que no se va a interpretar como parte del nombre. 5 Si se omite 'palabra', aparece el mensaje: 'parameter not null or not set'. 6 Un script consiste de comandos de edición, uno por línea, de la forma siguiente: [dirección [dirección] ] función [argumentos] 7 El comando 'sed' selecciona siempre el string más largo posible para satisfacer el criterio de selección. 8 El comando awk revisa los archivos de entrada y automáticamente parte cada línea de entrada en campos. Debido a que realiza varias cosas automáticamente – entrada, separación de campos, manejo del almacenamiento, inicialización – es que los programas awk son usualmente más pequeños que lo que serían en un lenguaje convencional. 9 Comúnmente, variable=expresión. 10 Salta los patrones restantes en esta línea de entrada. 11 Salta el resto de la entrada, el estado de salida es 'expr'. 12 Internamente las operaciones matemáticas se realizan en punto flotante. 13 Se usa la hora del día si no se especifica X. 14 Expresión regular. 15 Expresión regular o con FS si no se da 're'. 16 La función getline retorna los siguientes valores:  1 Si se encontró un registro.  0 Si se encontró el fin de archivo (EOF).  –1 Si ocurrió algún error. 17 Sin las comillas, bigpop y smallpop son meras variables sin inicializar. Si los nombres de archivos de salida fueran creados por una expresión, también debieran ser encerrados entre paréntesis. 18 El operador ' : ' compara 'expr1' con 'expr2' (este último debe ser una expresión regular). La sintaxis es la misma que para 'ed' sin embargo, ya que todos los patrones se asume que empiezan con ' ^ ', éste no se trata como caracter especial. 19 Se puede obtener parte de 'expr1' si se usa la simbología '(..)'. 20 Se escapa el símbolo ' | ' para evitar que se interprete como símbolo de entubado. Se interpreta en el contexto de 'expr' es decir, 'expr' retorna el primer argumento si éste no es nulo ni cero de lo contrario, retorna el segundo. 21 Las variables MINWEEKS y MAXWEEKS son conocidas también como valores para vigencia del password. 22 Nuevo proceso para control de puertos tty. Los monitores suministrados son ttymon, listen, inetd. Cuando se recibe una solicitud por parte del monitor ttymon, él invoca un servicio como login (reemplaza los procesos 'getty' y 'uugetty'). Un monitor ttymon puede servir todos los puertos necesarios de una tarjeta determinada y cada uno puede ser configurado separadamente. 23 Determina el número de puertos seriales SIO, así como el número de puertos SCP y tarjetas. Verifica la existencia nodal de cada puerto serial. Chequea y crea el monitor para cada tarjeta así como el servicio de login para cada puerto. 24 Cuando se utiliza esta carcterística, no debe incluirse ninguna velocidad en los flags niciales ni finales. 25 Adicionar una impresora al sistema definiendo su modelo no permite tomar ventaja de las capacidades de la base de datos 'terminfo'. Para usar esta base de datos se debe definir el tipo de impresora. 26 Los filtros lentos se ejecutan independientemente del manejador spool para evitar atar la impresora. 27 Cuando se adiciona una impresora al sistema en la configuración básica, el tipo de impresora se define como desconocida (unknown).
  • 123. UNIXWARE AVANZADO JDCM NA/1 1 Ejercicios Para todos los problemas/ejercicios siguientes, donde convenga o exista más de una alternativa de solución, asuma lo que crea conveniente y detalle en base a qué toma su decisión. 1. Sortee el archivo /etc/passwd por el group–id. 2. Ordene el directorio /etc/lddrv por tamaño, anteponiendo un mensaje como el siguiente: Número de archivos procesados : ## Espacio total empleado : ## y muestre seguidamente cada archivo de este directorio anteponiendo un número de secuencia. 3. Se desea una relación de todos aquellos archivos del sistema con un tamaño mayor a 128k. Deben ser totalmente identificados y listados. Este proceso debe realizarse todos los días jueves a las 18:00. 4. Se debe obtener una relación de todos aquellos archivos del sistema que pertenezcan al usuario ‘ FF ’ y deben borrarse del sistema. 5. Escriba un programa el cual llame la atención cada hora entre dos horas predeterminadas. 6. Construya un script el cual permita enviar mensajes a otros usuarios del sistema seleccionándolos de una lista preparada a partir del archivo ‘ /etc/password ’ (para mostrar sólo el user_id y su comentario separado por tabuladores) y verificándolos luego con el comando ‘ who ’. 7. Construya un programa que cuente el número de usuarios logeados al final de cada intervalo, así como el número de procesos ejecutados durante el mismo intervalo. Este intervalo debe especificarse con una opción ( –t por ejemplo), con un default de 5 minutos y un máximo de 60 minutos. 8. Cree un script que solicite continuamente un dato el cual debe ser un archivo o directorio (si no lo ingresa directamente). Debe verificar su existencia y mostrar la información indicada: Tipo : archivo/directorio Características : r/w/x Tamaño : ############ No. de links : ## Fecha de creación: : dd/Mes/AA Tenga en cuenta que cuando ingrese CR en la solicitud, debe permitirse imprimir toda la información anterior (siempre y cuando haya algo que imprimir), o simplemente salir del programa indicando cuántos archivos y/o directorios han sido procesados. 9. Cree un script que brinde la siguiente información en pantalla (utilizando la máscara de salida indicada): Fecha actual : dd/Mes/AA Hora actual : HH:MM:SS No. de usuarios del sistema : ## 10. Cuál es el número total de archivos y de directorios en el sistema?. 11. Se necesita un script que tenga 1 parámetro exactamente: b (para backup) / r (para restore) / l (para listar el contenido de una cinta). Debe utilizar el comando ‘ find ’. Debe grabar en bloques de 200k. Debe solicitar qué información debe grabar. En los tres casos debe seleccionarse manualmente la unidad de cinta que va a utilizar de una relación que el programa le presente (creada en el momento y utilizando los dispositivos el directorio ‘ /dev/rmt ’ que no terminan en ‘ n ’. Antes del trabajo en sí (para los casos de backup o restore) debe existir una opción para imprimir. Cuando se seleccione la opción de listar, siempre debe imprimirse el resultado por impresora. Una vez iniciado el trabajo, debo salir del programa pero teniendo en cuenta que se requiere una notificación de término del programa. 12. Dados los siguientes asignamientos:  $ x=*  $ y=?  $ x=’uno  • dos  • tres’ $ ahora=`date`  $ marca=’’ y estos archivos en su directorio:  $ echo *  nombres tst1 u vv cebra Cuál es la salida de los siguientes comandos?: a) echo *** error *** b) echo $x c) echo $z | wc –l d) echo “$z” | wc –l e) echo ‘$z’ | wc –l f) echo _$ahora_ g) echo hola $marca fuera h) echo “”” i) echo ‘es 5 * 4 18 ?’ j) echo Cuál es tu nombre? k) echo *** l) echo $$symbol m) echo $$symbol n) echo “” o) echo “” p) echo
  • 124. UNIXWARE AVANZADO JDCM NA/1 1 Preguntas de exámen Para todos los problemas/ejercicios siguientes, donde convenga o exista más de una alternativa de solución, asuma lo que crea conveniente y detalle en base a qué toma su decisión. 1. Seleccionar todos los archivos cuyos nombres contengan por lo menos tres letras mayúsculas en posiciones consecutivas y por lo menos un caracter antes de dos números en posiciones consecutivas.