SISTEMAS OPERATIVOS ACTUALES

Anuncio
SISTEMAS OPERATIVOS ACTUALES
Los sistemas operativos empleados normalmente son UNIX, Mac OS, MS−DOS, OS/2 y Windows−NT. El
UNIX y sus clones permiten múltiples tareas y múltiples usuarios. Su sistema de archivos proporciona un
método sencillo de organizar archivos y permite la protección de archivos. Sin embargo, las instrucciones del
UNIX no son intuitivas. Otros sistemas operativos multiusuario y multitarea son OS/2, desarrollado
inicialmente por Microsoft Corporation e International Business Machines Corporation (IBM), y
Windows−NT, desarrollado por Microsoft. El sistema operativo multitarea de las computadoras Apple se
denomina Mac OS. El DOS y su sucesor, el MS−DOS, son sistemas operativos populares entre los usuarios
de computadoras personales. Sólo permiten un usuario y una tarea.
UNIX
(CONCEPTOS BASICOS SOBRE)
UNIX, en informática, sistema operativo multiusuario que incorpora multitarea. Es un sistema operativo de
tiempo compartido, controla los recursos de una computadora y los asigna entre los usuarios. Permite a los
usuarios correr sus programas. Controla los dispositivos de periféricos conectados a la máquina.
El sistema operativo UNIX tiene diversas variantes y se considera potente, más transportable e independiente
de equipos concretos que otros sistemas operativos porque está escrito en lenguaje C. El UNIX está disponible
en varias formas, entre las que se cuenta AIX, una versión de UNIX adaptada por IBM (para su uso en
estaciones de trabajo basadas en RISC), A/UX (versión gráfica para equipos Apple Macintosh) y Mach (un
sistema operativo reescrito, pero esencialmente compatible con UNIX, para las computadoras NeXT).Este
sistema operativo es usado en diferentes estaciones de trabajo, así como también por los administradores de
red de área local junto con el sistema operativo os/2 y ms−dos este sistema autoriza a los usuarios compartir
archivos y recursos del sistema, como discos duros e impresoras. Asimismo, ofrece la posibilidad de ejecutar
aplicaciones distribuidas usando arquitecturas cliente/servidor.
HISTORIA COMPLETA
Entre 1965 y 1969, los Laboratorios Bell participaron con General Electric (Más tarde Honeywell) y Project
MAC (Del Massachusetts Institute of Technology) en el desarrollo del sistema Multics. Este sistema diseña
do para la macrocomputadora GE−645, era demasiado grande y complejo. Los diseñadores de Multics tenían
en mente un programa de utilidad general que pudiera ser en esencia "todo para el mundo".
Al avanzar los trabajos se hizo evidente que aunque Multics proporcionaría con toda probabilidad la
diversidad de servicios requerida, sería un sistema enorme, costoso y torpe. Por estas y muchas otras razones,
los Laboratorios Bell se retiraron del proyecto en 1969. Algunos de los miembros de investigación de Bell
comenzaron a trabajar en un sistema mucho menos ambicioso. El grupo, dirigido por Ken Thompson, buscaba
crear un ambiente de computación sencillo para investigación y desarrollo de programas potentes. La primera
versión de un sistema UNIX se creó para un DEC PDP−7 y se escribió en lenguaje ensamblador.
Thompson llevó a la práctica un sistema de archivos, un mecanismo de control de procesos, programas para el
manejo general de archivos y un intérprete de mandatos (Comandos). En 1970 Brian Kernighan acuñó el
nombre "UNIX" haciendo un juego de palabras con Multics; de hecho, en el sentido en que Multics era
"multi", los sistemas UNIX eran sin duda servicios de computación "uni", limitados.
Cuando apareció la PDP−11, su atractivo precio permitió al grupo adquirir la máquina. No contaba con apoyo
para la multiprogramación; la computadora tenía sólo 24K y el sistema ocupaba 16K ; por tanto quedaban 8K
1
reservados para el usuario. El tamaño máximo de archivo era de 64Kbytes. La aplicación principal era el
procesamiento de textos. No había protección del almacenamiento, de modo que el sistema podía caerse con
facilidad durante la prueba de un programa nuevo. El disco era pequeño, apenas ½ Megabyte.
Dennis Ritchie se unió a la labor de desarrollo y ayudó a rescribir los sistemas UNIX en C en 1973. Esto
ayudó a que los programas de los sistemas UNIX se volvieran más portátiles y comprensible s.
Las contribuciones de Thompson y Ritchie recibieron como reconocimiento el premio Turing, el de más
prestigio en la comunidad de computación.
Antes de la liberalización, AT&T no tenía permiso para competir en la industria de la informática, por lo que
ofreció los sistemas UNIX a las universidades por una cuota nominal. Además de distribuir el código fuente,
fomentando así el desarrollo adicional y las innovaciones.
En 1975 los sistemas UNIX se habían popularizado muchísimo en las universidades y así apareció una
organización de usuarios que evolucionó hasta convertirse en el grupo llamado USENIX.
Los sistemas UNIX satisfacen necesidades de los programadores que crean software y de los administradores
que deben controlar las labores de desarrollo de programas. Sin embargo, no estaban diseñados para sustituir
los sistemas operativos comerciales "de trabajo pesado" que dan apoyo a un procesamiento masivo de datos.
El sistema de tiempo compartido UNIX, séptima edición, editado en 1979, hizo que los sistemas UNIX
estuvieran más cerca de convertirse en productos comerciales válidos. Los archivos podían llegar a un tamaño
de mil millones de bytes. El sistema se hizo todavía más portátil y se amplió el lenguaje C. Se llevó a la
práctica un shell (Intérprete de los mandatos del usuario) más potente que incluía variables de cadena,
programación estructurada, manejo de trampas y otras características. Se añadió la capacidad de añadir
archivos entre una máquina y otra.
Reconociendo el valor de los sistemas UNIX, Microsoft anunció en 1980 que ofrecería XENIX, una versión
comercial de sistema UNIX, en microprocesadores de 16 bits. Para mejorar la viabilidad, Microsoft agrego la
recuperación de errores por hardware, reparación automática de archivos después de caídas, detección de
fallas en el suministro de energía y errores de paridad, segmentos compartidos de datos y una mejor
comunicación entre procesos.
En 1980, la Universidad de California en Berkeley recibió fondos del Departamento de Defensa para
evolucionar los sistemas UNIX de sistemas operativos pequeños de tiempo compartido a sistemas apropiados
para estudiar ambientes de computación distribuida. Esto redundó en el desarrollo del sistema 4.1 BSD,
después AT&T comercializó el sistema UNIX System III en 1982, este evolucionó hasta convertirse en
System V.
Ventajas de unix
♦ Multiusuario.
♦ Multitarea.
♦ Soporta acceso remoto.
♦ Soporte nativo de TCP/IP (Fácil conexión a Internet y otras redes)
♦ Contiene xFree86, que es una interfaz gráfica de usuario basada en los estándares de
X−Windows, y también es gratuita.
♦ Al instalar el sistema operativo, también se tiene la posibilidad de instalar varios programas,
tales como: hojas de cálculo, bases de datos, procesadores de texto, varios lenguajes de
programación, paquetes de telecomunicaciones y juegos.
♦ Cumple los estándares POSIX y de Sistemas Abiertos, esto es que tiene la capacidad de
2
comunicarse con sistemas distintos a él.
♦ Existe mucha documentación sobre éste.
Desventajas de unix
♦ Carencia de soporte técnico.
♦ No ofrece mucha seguridad.
♦ Problemas de hardware, no soporta todas las plataformas, y no es compatible con algunas
marcas específicas.
♦ No existe un control de calidad al momento de elaborar software para Linux, pues muchas
veces las aplicaciones se hacen y se liberan sin control alguno.
♦ Es poco probable que aplicaciones para DOS y OS/2, se ejecuten correctamente bajo Linux.
♦ No hay forma segura de instalarlo sin reparticionar el disco duro.
♦ El reparticionar el disco duro, implica borrar toda la información del mismo y después
restablecerla.
♦ Se requiere experiencia y conocimiento del sistema para administrarlo, pues como es un
sistema por línea de comandos, estos poseen muchas opciones y en ocasiones es difícil
realizar algunas tareas, que en otros sistemas operativos de red son triviales.
CARACTERISTICAS
El Shell.
El shell es el mecanismo de los sistemas UNIX para lograr la comunicación entre los usuarios y el sistema. Es
un intérprete de comandos que lee líneas tecleadas por el usuario y hace que se ejecuten las funciones del
sistema solicitadas. Es un programa de aplicación como cualquier otro; no es parte del núcleo. Es frecuente
que los sistemas UNIX manejen varios shells diferentes. El shell no reside permanentemente en la memoria
principal como e l núcleo; puede intercambiarse cuando se necesite.
EL NUCLEO.
El núcleo es la parte central de los sistemas operativos UNIX; encapsula el equipo y ofrece servicios de
sistemas UNIX a los programas de aplicaciones. El núcleo se encarga de la administración de procesos, de
memoria, de E/S y del reloj. Así como el shell proporciona servicios a los usuarios, el núcleo proporciona
servicios a los programas de aplicación, incluyendo al shell.
El núcleo del sistema operativo Unix (llamado Kernel) es un programa escrito casi en su totalidad en lenguaje
C, con excepción de una parte del manejo de interrupciones, expresada en el lenguaje ensamblador del
procesador en el que opera.
Las funciones del núcleo son permitir la existencia de un ambiente en el que sea posible atender a varios
usuarios y múltiples tareas en forma concurrente, repartiendo al procesador entre todos ellos, e intentando
mantener en grado óptimo la atención individual.
El Kernel opera como asignador de recursos para cualquier proceso que necesite hacer uso de las facilidades
de cómputo. Es el componente central de Unix y tiene las siguientes funciones:
− Creación de procesos, asignación de tiempos de atención y sincronización.
− Asignación de la atención del procesador a los procesos que lo requieren.
− Administración de espacio en el sistema de archivos, que incluye: acceso, protección y administración de
3
usuarios; comunicación entre usuarios v entre procesos, y manipulación de E/S y administración de
periféricos.
− Supervisión de la transmisión de datos entre la memoria principal y los dispositivos periféricos.
El Kernel reside siempre en la memoria central y tiene el control sobre la computadora, por lo que ningún otro
proceso puede interrumpirlo; sólo pueden llamarlo para que proporcione algún servicio de los ya
mencionados. Un proceso llama al Kernel mediante módulos especiales conocidos como llamadas al sistema.
El Kernel consta de dos artes principales: la sección de control de procesos y la de control de dispositivos. La
primera asigna recursos, programas, procesos y atiende sus requerimientos de servicio; la segunda, supervisa
la transferencia de datos entre la memoria principal y los dispositivos periféricos. En términos generales, cada
vez que algún usuario oprime una tecla de una terminal, o que se debe leer o escribir información del disco
magnético, se interrumpe al procesador central y el núcleo se encarga de efectuar la operación de
transferencia.
Cuando se inicia la operación de la computadora, debe cargarse en la memoria una copia del núcleo, que
reside en e] disco magnético (operación denominada bootstrap). Para ello, se deben inicializar algunas
interfaces básicas de hardware; entre ellas, el reloj que proporciona interrupciones periódicas. El Kernel
también prepara algunas estructuras de datos que abarcan una sección de almacenamiento temporal para
transferencia de información entre terminales y procesos, una sección para almacenamiento de descriptores de
archivos y una variable que indica la cantidad de memoria principal.
A continuación, el Kernel inicializa un proceso especial, llamado proceso 0. En general, los procesos se crean
mediante una llamada a una rutina del sistema (fork), que funciona por un mecanismo de duplicación de
procesos. Sin embargo, esto no es suficiente para crear el primero de ellos, por lo que el Kernel asigna una
estructura de datos y establece apuntadores a una sección especial de la memoria, llamada tabla de procesos,
que contendrá los descriptores de cada uno de los procesos existentes en el sistema.
Después de haber creado el proceso 0, se hace una copia del mismo, con lo que se crea el proceso 1; éste muy
pronto se encargará de "dar vida" al sistema completo, mediante la activación de otros procesos que también
forman parte del núcleo. Es decir, se inicia una cadena de activaciones de procesos, entre los cuales destaca el
conocido como despachador, o scheduler, que es el responsable de decidir cuál proceso se ejecutará y cuáles
van a entrar o salir de la memoria central. A partir de ese momento se conoce el número 1 como proceso de
inicialización del sistema, init.
El proceso init es el responsable de establecer la estructura de procesos en Unix. Normalmente, es capaz de
crear al menos dos estructuras distintas de procesos: el modo monousuario y el multiusuario. Comienza
activando el intérprete del lenguaje de control (Shell) en la terminal principal, o consola, del sistema y
proporcionándole privilegios de "súper usuario". En la modalidad de un solo usuario la consola permite iniciar
una primera sesión, con privilegios especiales, e impide que las otras líneas de comunicación acepten iniciar
sesiones nuevas. Esta modalidad se usa con frecuencia para revisar y reparar sistemas de archivos, realizar
pruebas de funciones básicas del sistema y para otras actividades que requieren uso exclusivo de la
computadora.
Init crea otro proceso, que espera pacientemente a que alguien entre en sesión en alguna línea de
comunicación. Cuando esto sucede, realiza ajustes en el protocolo de la línea y ejecuta el programa login, que
se encarga de atender inicialmente a los nuevos usuarios. Si la clave del usuario, y la contraseña
proporcionadas son las correctas, entonces entra en operación el programa Shell, que en lo sucesivo se
encargará de la atención normal del usuario que se dio de alta en esa terminal.
A partir de ese momento el responsable de atender al usuario en esa terminal es el intérprete Shell.
4
Cuando se desea terminar la sesión hay que desconectarse de Shell (y, por lo tanto, de Unix), mediante una
secuencia especial de teclas (usualmente. < CTL > − D). A partir de ese momento la terminal queda
disponible para atender a un nuevo usuario.
Administración de archivos y directorios.
El sistema de archivos de Unix; esta basado en un modelo arborescente y recursivo, en el cual los nodos
pueden ser tanto archivos como directorios, y estos últimos pueden contener a su vez directorios o
subdirectorios. Debido a esta filosofía, se maneja al sistema con muy pocas órdenes, que permiten una gran
gama de posibilidades. Todo archivo de Unix está controlado por múltiples niveles de protección, que
especifican los permisos de acceso al mismo. La diferencia que existe entre un archivo de datos, un programa,
un manejador de entrada/salida o una instrucción ejecutable se refleja en estos parámetros, de modo que el
sistema operativo adquiere características de coherencia y elegancia que lo distinguen.
La raíz del sistema de archivos (conocida como root ) se denota con el símbolo "/", y de ahí se desprende un
conjunto de directorios que contienen todos los archivos del sistema de cómputo. La raíz del sistema de
archivos (conocida como root ) se denota con el símbolo "/", y de ahí se desprende un conjunto de directorios
que contienen todos los archivos del sistema de cómputo. En el caso de los archivos no se puede ocupar esta
filosofía ya que si otros archivos dependieran de ellos se convertirían en directorios. Se define a cada uno de
los archivos con una forma unívoca con su trayectoria (path name), esta trayectoria es similar a la ruta de
acceso e el sistema operativo ms−do.
Unix incluye, además, múltiples esquemas para crear, editar y procesar documentos. Existen varios tipos de
editores, formadores de textos, macroprocesadores para textos, formadores de tablas, preprocesadores de
expresiones matemáticas y un gran número de ayudas y utilerías diversas.
El Sistema de Archivos.
Los sistemas UNIX utilizan un sistema de archivos jerárquicos con su origen en el nodo raíz (Root). Los
nombres de archivos aparecen en directorios que son a su vez archivos UNIX. Cada entrada de directorio
contiene el nombre del archivo y un apuntador al inodo del archivo; el inodo contiene apuntadores a los
bloques del archivo en disco. El núcleo se encarga de mantener la estructura de directorios del sistema de
archivo. Desde el punto de vista del sistema, un directorio es idéntico a un archivo ordinario excepto por la
restricción de que los usuarios no pueden escribir en los directorios, aunque sí pueden leerlos.
Manejo del Procesador.
En Unix se ejecutan programas en un medio llamado "proceso de usuario". Cuando se requiere una función
del Kernel, el proceso de usuario hace una llamada especial al sistema y entonces el control pasa
temporalmente al núcleo. Para esto se requiere de un conjunto de elementos de uso interno, que se mencionan
a continuación.
Se conoce como imagen a una especie de fotografía del ambiente de ejecución de un proceso, que incluye una
descripción de la memoria, valores de registros generales, status de archivos abiertos, el directorio actual,
etcétera. Una imagen es el estado actual de una computadora virtual, dedicada a un proceso en particular.
Un proceso se define como la ejecución de una imagen. Mientras el procesador ejecuta un proceso, la imagen
debe residir en la memoria principal; durante la ejecución de otros procesos permanece primera en la memoria
principal a menos que la aparición de un proceso activo de mayor prioridad la obligue a ser copiada al disco,
como ya se dijo.
Un proceso puede encontrarse en uno de varios estados: en ejecución; listo para ejecutar, o en espera.
5
Cuando se invoca una función del sistema, el proceso de usuario llama al Kernel como subrutina. Hay un
cambio de ambientes y, como resultado, se tiene un proceso del sistema. Estos dos procesos son dos fases del
mismo original, que nunca se ejecutan en forma simultánea.
Existe una tabla de procesos que contiene una entrada por cada uno de ellos con los datos que requiere el
sistema: identificación, direcciones de los segmentos que emplea en la memoria, información que necesita el
scheduler y otros. La entrada de la tabla de procesos se asigna cuando se crea el proceso y se libera cuando
éste termina.
Para crear un proceso se requiere la inicialización de una entrada en la tabla, así como la creación de
segmentos de texto y de datos. Además, es necesario modificar la tabla cuando cambia el estado del proceso o
cuando recibe un mensaje de otro (para sincronización, por ejemplo). Cuando un proceso termina, su entrada
en la tabla se libera y queda otro disponible para que otro nuevo la utilice.
En el sistema operativo Unix los procesos pueden comunicarse internamente entre sí, mediante el envío de
mensajes o señales. El mecanismo conocido como interconexión (pipe) crea un canal entre dos procesos
mediante una llamada a una rutina del Kernel, y se emplea tanto para pasar datos unidireccionalmente entre
las imágenes de ambos, como para sincronizarlos, ya que si un proceso intenta escribir en un pipe ocupado,
debe esperar a que el receptor lea los datos pendientes. Lo mismo ocurre en el caso de una lectura de datos
inexistentes: el proceso que intenta leer debe esperar a que el proceso productor deposite los datos en el canal
de intercomunicación.
Entre las diferentes llamadas al sistema para el manejo de procesos que existen en Unix están las siguientes,
algunas de las cuales ya han sido mencionadas: fork (sacar una copia a un proceso); exec (cambiar la
identidad de un proceso); kill (enviar una señal a un proceso); signal (especificar la acción por ejecutar cuando
se recibe una señal de otro proceso), y exit (terminar un proceso).
Dentro de las tareas del manejo del procesador destaca la asignación dinámica (scheduling), que en Unix
resuelve el scheduler mediante un mecanismo de prioridades. Cada proceso tiene asignada una prioridad; las
prioridades de los procesos de usuario son menores que la más pequeña de un proceso del sistema.
El "motor" que mantiene en movimiento un esquema de multiprogramación es, por un lado, el conjunto de
interrupciones que genera el desempeño de los procesos y, por otro, los constantes recordatorios que hace el
reloj del procesador para indicar que se terminó la fracción de tiempo dedicada a cada proceso.
En el sistema Unix, las interrupciones son causadas por lo que se conoce como eventos, entre los cuales se
consideran: la ejecución de una tarea de entrada/salida; la terminación de los procesos dependientes de otro; la
terminación de la fracción de tiempo asignada a un proceso, y la recepción de una señal desde otro proceso.
En un sistema de tiempo compartido se divide el tiempo en un determinado número de intervalos o fracciones
y se asigna cada una de ellas a un proceso. Además Unix toma en consideración que hay procesos en espera
de una operación de E/S y que ya no pueden aprovechar su fracción. Para asegurar una distribución adecuada
del procesador entre los procesos se calculan dinámicamente las prioridades de estos últimos, con el fin de
determinar cuál será el proceso que se ejecutará cuando se suspenda el proceso activo actual.
Manejo De Memoria
Dependiendo de la computadora en la que se ejecute, Unix utiliza dos técnicas de manejo de memoria:
swapping y memoria virtual.
Manejo de entradas y salidas
6
El sistema de entrada/salida se divide en dos sistemas complementarios: el estructurado por bloques y el
estructurado por caracteres. El primero se usa para manejar cintas y discos magnéticos, y emplea bloques de
tamaño fijo (512 o 1024 bytes) para leer o escribir. El segundo se utiliza para atender a las terminales, líneas
de comunicación e impresoras, y funciona byte por byte.
Características Generales.
• Fue desarrollado por los Laboratorios Bell en 1969.
• El sistema operativo UNIX era, en 1981, un sistema de comando por línea, con varias opciones de
sintaxis.
• El sistema operativo, ahora soporta ratón e interfaz de ventanas como X−Windows System de MIT,
News de Sun Microsystem y Open Look de AT&T.
• Surgimiento de varios UNIX:
♦ XENIX de Microsoft (1980).
♦ Reparación de errores por Hardware.
♦ Reparación de archivos por caídas del sistema.
♦ Una mejor comunicación entre procesos.
♦ UNIX 4.1 BSD de la Universidad de California en Berkely (1980).
♦ Soporta memoria virtual.
♦ Sistema de archivos más rápido y potente.
♦ Comunicación entre procesos.
♦ Apoyo para redes de área local.
♦ Editor de pantalla completo.
♦ UNIX System III de AT&T (1982), evolucionó hasta convertirse en System V.
♦ Captura remota de trabajos.
♦ Mejor sistema de archivos.
♦ Mejores recursos para la comunicación entre procesos.
♦ Sun OS de Sun Microsystem.
♦ Tomó como base al sistema 4.2 BSD como modelo.
♦ Proporcionaba apoyo a una red de estación de trabajo.
♦ Manejo de una interfaz gráfica con ventanas y orientado al ratón.
• UNIX se ha implementado en:
♦ Supercomputadoras.
♦ Macros.
♦ Minis.
♦ Estaciones de trabajo.
♦ PCs.
• Componentes de UNIX:
♦ Shell, intérprete de comandos.
♦ Núcleo, se encarga de la administración de Procesos, Memoria, Entrada/Salida y Ciclos de
Reloj.
♦ El Sistema de archivos es jerárquico, con origen en un nodo raíz.
• Contiene 4 aportaciones importantes que han aumentado la viabilidad de los sistemas UNIX como
base para los sistemas distribuidos.
• Conectores Berkely.
• Los Streams de AT&T.
• El sistema de archivos de red NFS.
• El sistema de archivos remoto RFS de AT&T.
Características Específicas.
7
− Es un sistema operativo multiusuario, con capacidad de simular multiprocesamiento y
procesamiento no interactivo.
− Está escrito en un lenguaje de alto nivel: C.
− Dispone de un lenguaje de control programable llamado SHELL.
− Ofrece facilidades para la creación de programas y sistemas y el ambiente adecuado para las tareas
de diseños de software.
− Emplea manejo dinámico de memoria por intercambio o paginación.
− Tiene capacidad de interconexión de procesos.
− Permite comunicación entre procesos.
− Emplea un sistema jerárquico de archivos, con facilidades de protección de archivos, cuentas y
procesos.
− Tiene facilidad para redireccionamiento de Entradas/Salidas.
♦ Garantiza un alto grado de portabilidad.
El sistema se basa en un Núcleo llamado Kernel, que reside permanentemente en la memoria, y que
atiende a todas las llamadas del sistema, administra el acceso a los archivos y el inicio o la suspensión
de las tareas de los usuarios.
La comunicación con el sistema UNIX se da mediante un programa de control llamado SHELL. Este
es un lenguaje de control, un intérprete, y un lenguaje de programación, cuyas características lo hacen
sumamente flexible para las tareas de un centro de cómputo. Como lenguaje de programación abarca
los siguientes aspectos:
− Ofrece las estructuras de control normales: secuenciación, iteración condicional, selección y otras.
− Paso de parámetros.
− Sustitución textual de variables y Cadenas.
− Comunicación vi direccional entre órdenes de shell.
El shell permite modificar en forma dinámica las características con que se ejecutan los programas en
UNIX:
Las entradas y salidas pueden ser redireccionadas o redirigidas hacia archivos, procesos y
dispositivos;
Es posible interconectar procesos entre sí.
Lenguaje de control del sistema operativo.
Entre los rasgos distintivos de Unix está el lenguaje de control que emplea, llamado Shell. Es
importante analizar dos funciones más de Shell, llamadas redireccionamiento e Interconexión.
8
Asociado con cada proceso hay un conjunto de descriptores de archivo numerados 0, I y 2, que se
utilizan para todas las transacciones entre los procesos y el sistema operativo. El descriptor de archivo
0 se conoce como la entrada estándar; el descriptor de archivo 1, como la salida estándar, y el
descriptor 2, como el error estándar. En general, todos están asociados con la terminal de vídeo, pero,
debido a que inicialmente son establecidos por Shell, es posible reasignarlos.
Una parte de la orden que comience con el símbolo ? se considera como el nombre del archivo que
será abierto por Shell y que se asociará con la entrada estándar; en su ausencia, la entrada estándar se
asigna a la terminal. En forma similar, un archivo cuyo nombre está precedido por el símbolo > recibe
la salida estándar de las operaciones.
Cuando Shell interpreta la orden
califica < examen > resulta
llama a ejecución al programa califica (que ya debe estar compilado y listo para ejecutar) y detecta la
existencia de un archivo que toma el lugar de la entrada estándar y de otro que reemplaza a la salida
estándar. Después, pasa como datos de lectura los contenidos del archivo examen recién abierto (que
debe existir previamente) al programa ejecutable. Conforme el programa produce datos como salida,
éstos se guardan en el archivo resulta que Shell crea en ese momento.
En la teoría de lenguajes formales desempeñan un importante papel las gramáticas llamadas de tipo 3
(también conocidas como regulares), que tienen múltiples aplicaciones en el manejo de lenguajes.
Existen unas construcciones gramaticales conocidas como expresiones regulares, con las que se puede
hacer referencia a un conjunto ilimitado de nombres con estructura lexicográfica similar; esto lo
aprovecha Shell para dar al usuario facilidades expresivas adicionales en el manejo de los nombres de
los archivos. Así, por ejemplo, el nombre carta * se refiere a todos los archivos que comiencen con el
prefijo carta* y que sean seguidos por cualquier subcadena, incluyendo la cadena vacía; por ello, si se
incluye el nombre carta* en alguna orden, Shell la aplicará a los archivos carta, carta1, carta2 y
cualquier otro que cumpla con esa especificación abreviada. En general, en lugares donde se emplea
un nombre o una trayectoria, Shell permite utilizar una expresión regular que sirve como abreviatura
para toda una familia de ellos, y automáticamente repite el pedido de atención para los componentes.
Existen además otros caracteres especiales que Shell reconoce y emplea para el manejo de
expresiones regulares, lo que proporciona al lenguaje de control de Unix mayor potencia y capacidad
expresiva.
En Unix existe también la posibilidad de ejecutar programas sin tener que atenderlos en forma
interactiva, sino simulando paralelismo (es decir, atender de manera concurrente varios procesos de
un mismo usuario). Esto se logra agregando el símbolo & al final de la línea en la que se escribe la
orden de ejecución. Como resultado, Shell no espera que el proceso "hijo'' termine de ejecutar (como
haría normalmente), sino que regresa a atender al usuario inmediatamente después de haber creado el
proceso asincrónico, simulando en esta forma el procesamiento por lotes ( batch ) Para cada uno de
estos procesos Shell proporciona, además, el número de identificación, por lo que si fuera necesario el
usuario podría cancelarlo posteriormente, o averiguar el avance de la ejecución.
La comunicación interna entre procesos (es decir, el envío de mensajes con los que los diversos
procesos se sincronizan y coordinan) ocurre mediante el mecanismo de interconexiones (pipes) ya
mencionado, que conecta la salida estándar de un programa a la entrada estándar de otro, como si
fuera un conducto con dos extremos, cada uno de los cuales está conectado a su vez a un proceso
distinto. Desde Shell puede emplearse este mecanismo con el símbolo | en la línea donde se escribe la
orden de ejecución.
9
Así en el ejemplo:
(califica < tarea | sorte > lista) &
se emplean las características de interconexión, redireccionamiento y asincronía de procesos para
lograr resultados difíciles de obtener en otros sistemas operativos. Aquí se pide que, en forma
asincrónica (es decir, dejando que la terminal siga disponible para atender otras tareas del mismo
usuario), se ejecute el programa califica para que lea los datos que requiere del archivo tareas; al
terminar, se conectará con el proceso sort (es decir, pasará los resultados intermedios) para que
continúe el procesamiento y se arreglen los resultados en orden alfabético; al final de todo esto, los
resultados quedarán en el archivo lista.
Con esta otra orden, por ejemplo, se busca obtener todos los renglones que contengan las palabras
"contrato" o "empleado" en los archivos en disco cuyos nombres comiencen con la letra "E" (lo cual
se denota mediante una expresión regular). Para lograrlo, se hace uso de una función llamada egrep,
especial para el manejo de patrones y combinaciones de expresiones regulares dentro de los archivos:
egrep−n 'contrato' 'empleado' E *
Los resultados aparecen así:
Emple1: 5: en caso de que un empleado decide hacer uso de la facilidad,
Emple1:7: y el contrato así lo considere las obligaciones de la
Emple2:9: Cláusula II: El contrato colectivo de trabajo
Emple2:15: Fracción llI: El empleado tendrá derecho, de acuerdo con lo
El tercer renglón, por ejemplo, muestra el noveno renglón del archivo Emple2, que contiene una de
las palabras buscadas.
Como Unix fue diseñado para servir de entorno en las labores de diseño y producción de programas,
ofrece − además de su filosofía misma − un rico conjunto de herramientas para la creación de
sistemas complejos, entre las que destaca el subsistema make. Este último ofrece una especie de
lenguaje muy sencillo, con el cual el programador describe las relaciones estructurales entre los
módulos que configuran un sistema completo, para que de ahí en adelante make se encargue de
mantener el sistema siempre al día. Es decir, si se modifica algún módulo, se reemplaza o se añade
otro, las compilaciones individuales, así como las cargas y ligas a que haya lugar, serán realizadas en
forma automática, por esta herramienta. Con una sola orden, entonces, es posible efectuar decenas de
compilaciones y ligas predefinidas entre módulos, y asegurarse de que en todo momento se tiene la
última versión de un sistema, ya que también se lleva cuenta automática de las fechas de creación,
modificación y compilación de los diversos módulos. De esta manera, se convierte en una herramienta
casi indispensable al desarrollar aplicaciones que requieren decenas de programas que interactúan
entre sí o que mantienen relaciones jerárquicas.
Otras herramientas interesantes son ar, diseñado para crear y mantener bibliotecas de programas (que
serán luego utilizadas por otros programas para efectuar las funciones ya definidas sin tener que
duplicar el código); awk, un lenguaje para reconocimiento de patrones y expresiones regulares (es
decir, generadas por una gramática regular o de tipo 3), útil para extraer información de archivos en
forma selectiva; lex, un generador de analizadores lexicográfico, y yacc, un compilador de
compiladores. Estos dos últimos se emplean como herramientas en la creación de compiladores y
10
procesadores de lenguajes.
La lista complete de funciones, órdenes de subsistemas que forman parte de las utilerías del sistema
operativo Unix es realmente grande, e incluye más de un centenar, que se pueden agrupar en los
siguientes rubros:
Compiladores de compiladores.
Ejecución de programas.
Facilidades de comunicaciones.
Funciones para control de status.
Funciones para control de usuarios.
Funciones para impresión.
Herramientas de desarrollo de programación.
Lenguaje C, funciones y bibliotecas asociados.
Macroprocesamiento.
Manejo de directorios y archivos.
Manejo de gráficas.
Manejo de información.
Manejo de terminales.
Mantenimiento y respaldos.
Otros lenguajes algorítmicos integrados.
Preparación de documentos.
ARQUITECTURA DEL SISTEMA OPERATIVO UNIX.
11
INTRODUCCIÓN PARA EL MANEJO DE ESTE SISTEMA
Comandos:
Date
Df
passwd
pkgadd
ps
pwd
rm
rmdir
set
sleep
source
sort
spell
split
stty
ail
tar
touch
troff
tset
umask
uniq
vi
vipw
volcheck
alias
awk
bdiff
bfs
cal
cat
cc
Dice la hora y el dia en el sistema
Muestra todos los drivers que posee su maquina
Sirve para cambiar el password
Instala un nuevo programa en el sistema
Despliega una lista de todos los procesos que se
estan ejecutando
Dice el directorio en el cual se esta trabajando
Elimina archivos
Elimina directorios
Ofrece una lista de todas las variables de una
sesion
Desactiva un proceso
Permite a un usuario ejecutar un archivo y
actualizar los cambios realizados en el
Ordena los archivos
Revisa los errores de escritura o sintaxis en un
archivo
Divide un archivo
Establece las opciones de un terminal
Muestra el final de un archivo
Copia los archivos especificados dentro de otro
Crea un archivo vacio o actualiza la fecha y hora
de un archivo
Da salidas en cierto formato
Establece el tipo de terminal
especifica la creacion de una nueva mascara
Compara dos archivos
Editor de archivos de texto a pantalla completa
Permite ejecutar el editor vi con un archivo de
permisos especiales como un passwd o un
shadows
Revisa el sistema para determinar si existe un
floppy disk instalado en su maquina
Permite a un usuario ver sus alias
Permite al usuario buscar un termino dentro de un
archivo
Compara dos archivos
Busca un archivo
Muestra un calendario
Concatena e imprime un archivo
Compilador de archivos .c en algunos sistemas se
12
cd
chgrb
chmod
chown
cmp
comm
cp
wc
who
write
!
talk
diff
du
echo
ed
ex
expr
find
f77
format
help
kill
ln
lpr
ls
mail
mkdir
llama gcc
Cambiar de directorio
Cambia el grupo que es propietario de un archivo.
O sea si un archivo pertenece al grupo root lo
podriamos cambiar para que pertenezca al grupo
hackven
Cambia los permisos sobre un archivo
Cambia el propietario particular de un
determinado archivo. O sea un archivo
perteneciente al usuario kimo lo podriamos
cambiar para pertenecer al usuario dark
Compara dos archivos
Compara dos archivos y determina que lineas son
comunes
Copia un archivo en otro sitio y hasta con otro
nombre
Muestra detalles
Dice que usuarios estan conectados al servidor a
la vez que nosotros
Envia un mensaje a otro usuario
Repite un comando
Establece una conversacion con otro usuario
como si fuera un chat
Muestra las diferencias entre dos archivos
Muestra el espacio utilizado por cada directorio
Prueba para ver el eco
Editor de texto
Otro editor de texto
Evalua una formula matematica
Encuentra un archivo. En la RED HAT 5.0 solo
busca en el mismo directorio en donde se esta,
pero en la RED HAT 5.1 locate lo busca en todo
el sistema dando una lista de todos los archivos
que contengan el mismo string como por ejemplo
passwd
Compilador de Fortran
Inicializa un disco 3 1/2
Ayuda
Detiene un proceso que se esta ejecutando
Crea un enlace entre dos archivos
Copia un archivo y lo envia a una impresora
Crea una lista de archivos que se encuentran en un
directorio. Con la opcion −s se muestran los
archivos ocultos
Permite a el usuario enviar y recibir emails
Crea un directorio
13
more
mv
nohup
nroff
hostname
mount
unmount
ftp
telnet
df
setup
pnpdump
traceroute
route
Muestra en la pantalla datos de un archivo
Se utiliza para mover o renombrar archivos
Permite a un comando seguir ejecutandose aunque
se cierre la sesion
Utilizado para darle formato a un texto
Sirve para cambiar el hostname y ver el hostname
actual
Monta sistemas de archivos, y unidades de todo
tipo (CD ROM, floppys, etc)
Se utiliza para desmontar sistemas de
archivos,luego de usar mount se utiliza este
Protocolo de Transferencia de archivos, se utiliza
para transferir archivos entre hosts
Emulador de Terminal
Muestra la cantidad de espacio libre y ocupado
por las particiones
En linux Slackware es una herramienta para
configurar el Sistema al igual que en Linux Red
Hat aunque con menos funciones que en el
slackware, se ejecuta como root
Herramienta de configuracion de Hardware PNP
se utiliza en conjunto con isapnp
Dice la ruta que siguen los paquetes entre tu
maquina y otro host.
Sirve para modificar las tablas de enrutamiento
del propio host
TEMAS RELACIONADOS CON EL SISTEMA OPERATIVO UNIX
NOVELL, INC.
Novell, Inc., compañía de computadoras estadounidense especializada en software para redes, y con
sede en Orem, Utah. Ray Noorda, presidente de Novell, fundó la compañía a partir de Novell Data
Systems, un fabricante de ordenadores o computadoras personales (PC) que se encontraba
prácticamente en bancarrota en 1983. Noorda reconoció el valor de un sistema operativo de Novell
que permitía a los PCs compartir elementos, como discos o impresoras de una red de área local
(LAN).
Bajo la dirección de Noorda, Novell detuvo la fabricación de computadoras y se dedicó
exclusivamente a fabricar y distribuir software. En la década de los ochenta la compañía creció
gracias a la venta de software para compartir discos e impresoras. A finales de esta década los clientes
de las compañías pedían software para conectar grupos de PCs a las mini computadoras que
funcionaban en los departamentos de las empresas y software que permitiera conectar los PCs a
grandes servidores de bases de datos. Dado que las compañías disponían de equipos de distintas
marcas, los sistemas eran incompatibles y no podían intercambiar información. En 1989 Novell
presentó una versión de su programa Netware que solucionaba este problema. Funcionaba con
ordenadores IBM y equipos compatibles, con los equipos Apple Macintosh y con el sistema operativo
UNIX, el más utilizado en las estaciones de trabajo. El nuevo software permitía al usuario tener
acceso a cualquier computadora de la red.
14
En 1992 Novell tenía una cuota del 65% del mercado de sistemas operativos para redes, el segmento
con mayor crecimiento de la industria informática. La estrategia de la compañía incluía la creación de
alianzas con otras compañías y la adquisición de software para cubrir las carencias de su tecnología.
En 1991 adquirió Digital Research Inc., y en febrero de 1993 firmó definitivamente un acuerdo con la
American Telephone & Telegraph Company (AT&T) para la adquisición de UNIX System
Laboratories, los creadores del sistema operativo UNIX. Continuando su expansión a otras áreas,
Novell adquirió en marzo de 1994 WordPerfect Corporation, un fabricante de aplicaciones de
procesamiento de textos. También adquirió la división de hojas de cálculo Quattro Pro de Borland
International, Inc. Novell tiene una red de distribuidores autorizados en América, Europa y Asia.
BELL LABORATORIES
Bell Laboratories, laboratorios que dependen de la sociedad estadounidense de telecomunicaciones
American Telephone & Telegraph (AT&T), conocidos por sus investigaciones e innovaciones en los
campos de las comunicaciones y la informática. Bell Laboratories es un nombre familiar para muchos
profesionales de la informática como cuna del transistor, del lenguaje de programación C y del
difundido sistema operativo UNIX.
Estación de trabajo.− En informática, la acepción más usual del término se refiere a un ordenador o
computadora de gama alta, normalmente con uno o varios procesadores RISC y sistema operativo
UNIX (aunque la distinción con un ordenador personal es cada vez menor), ejecutando aplicaciones
de grandes requerimientos de cálculo, gráficos o conectividad.
SUN MICROSYSTEMS, INC.−Compañía estadounidense de computadoras que fue fundada en
1983 esta compañía ha sido líder en la fabricación de estaciones de trabajo, que como ya se a
mencionado tienen como sistema operativo principal el sistema operativo unix. A finales de 1991 sun
aportaba el 30% de estaciones de trabajo del mercado.
TCP/IP, (Transmission Control Protocol/Internet Protocol.).− Se desarrolló originalmente para la
comunicación de computadoras con sistema operativo UNIX a través de Arpanet.
UNIX en el mundo.
A medida que los servidores departamentales se abren paso hacia el centro de datos, los servidores
Unix se han ido incorporando con mayor presteza, ya que son más escalables que los servidores PC
bajo NT Windows. Los sistemas Cray Origin2000 de Silicon grafics pueden funcionar con hasta 128
procesadores conectados mediante redes de malla CrayLink Interconnect (NT soporta hasta 28).
Los sistemas UNIX tienen un rendimiento mayor que sus colegas de arquitectura PC. Así lo afirma el
Transaction Processing Council (TCP) −California, EEUU− quien asegura que los sistemas Unix
ocupan los 10 primeros lugares en el ranking de performance. Con una versión de DBMS Oracle
corriendo sobre un sistema Alpha de Digital Equipment, se completan 102.541 transacciones por
minuto.
Entre las grandes organizaciones, el International Technology Group descubrió que la mayor parte de
los presupuestos de Informática y Telecomunicaciones se gasta en servidores Unix (43%). El gasto de
los servidores PC ocupa el segundo puesto (32,1%), mientras que los mainframe son los que generan
el menor gasto (24,4%).
El editor básico de líneas ed.
El editor ed es un editor de líneas. Las operaciones del editor se realizan sobre líneas. Aunque algunos
15
de sus comandos pueden hacer referencia a un conjunto de líneas, sin embargo, este editor no tiene la
facilidad de movimiento entre líneas como en un editor de pantalla completa.
El editor `ed' tiene dos modos de operación:
♦ Modo de Orden: Se utiliza para dar órdenes, tales como escribir en un fichero, buscar
cadenas de texto, etc.
♦ Modo de Entrada: Se utiliza para introducir texto. Estando en este modo para retornar al
modo de orden después de haber introducido el texto se utiliza ^d.
Para invocar a este editor se utiliza la orden: ed fichero, si existe fichero, copia el contenido del
mismo en la memoria y muestra el tamaño del fichero en caracteres. Si el fichero no existe, señala que
el buffer asignado al fichero está vacío. En ambos casos el editor queda en modo orden.
La orden P hace que se muestre el prompt del editor ed cuando se encuentre en modo de orden. Por
omisión es el carácter *.
Cuando se comete un error aparece el carácter ?. La orden H activa una presentación de mensajes de
error más explicita.
La mayoría de las operaciones en modo orden operan sobre la línea actual, o bien, sobre un rango de
líneas delimitado por el número de línea inicial, una , (coma) y el número de línea final. En modo de
orden la línea actual se denomina . (punto) y la última línea del fichero $ (dólar).
Comandos del editor ed y Función que realizan:
Comando
[lin]a
[lin]i
[lin]c
[lin]d
[lin]p
[lin]n
[lin]md
[lin]td
e[fic]
E[fic]
f[nombre]
[lin]r [fic]
[lin]w [fic]
q
Q
P
H
u
!orden
Función
Añadir texto a partir de la línea indicada, o en la actual si no se indica
Inserta texto antes de línea indicada
Cambiar la línea o líneas indicadas
Borra la línea o las líneas indicadas
Visualiza la línea o el rango de líneas indicadas.
Igual que el anterior, mostrando el número de la línea
Mover la línea o rango de líneas a partir de la línea d
Copiar la línea o rango de líneas indicado a partir de la línea d
Carga el fichero indicado. No actúa si el fichero actual no está grabado
Carga el fichero indicado sin comprobar si el fichero actual está grabado o no
Fija el nombre del fichero actual
Lee el fichero indicado añadiendo a partir de la línea indicada o de la última
si no se indica
Graba las líneas indicadas, todas por defecto, en el fichero especificado o en
el fichero actual por defecto
Sale del editor, emite un error si el fichero actual no fue grabado
Igual que el anterior, sin comprobar si el fichero actual fue grabado
Activa /Desactiva el prompt del editor
Activa/Desactiva los mensaje explicativos de error
Deshace el último comando que puede deshacerse. Por ejemplo una inserción.
Ejecuta la orden especificada llamando al intérprete de comandos sin salir del
editor
16
+[n]
−[n]
^d
Avanza n líneas o una por defecto desde la línea actual
Retrocede n líneas o una por defecto desde la línea actual
Vuelve al modo orden
Busca la expresión indicada (expr), en el rango de líneas indicado (todas por
[lin]g/expr/comando defecto) ejecutando en cada una de ellas el comando especificado, por
ejemplo: g/hola/n
Se posiciona una a una en todas las líneas dónde ha encontrado expr, en el
[lin]G/expr/
rango de líneas especificado (todas por defecto), a la espera de una orden o
<intro> para continuar
Busca las líneas que no contengan la expresión indicada (expr), en el rango
[lin]v/expr/comando de líneas indicado (todas por defecto) ejecutando en cada una de ellas el
comando especificado. Por ejemplo: v/hola/n
Se posiciona una a una en todas las líneas donde no ha encontrado expr en el
[lin]V/expr/
rango de líneas indicado (todas por defecto) a espera de una orden o <intro>
para continuar
Busca las líneas que contienen expr dentro del rango indicado o en la actual
[lin]s/expr/sust/[g]
por defecto, sustituyendo expr por sust. Si se incluye g sustituye en todo el
rango y no solo la primera concurrencia en ese rango
El editor de pantallas vi.
El editor vi es un editor de pantalla completa.
De forma similar a ed, el editor vi siempre trabaja con una copia del fichero que se edita, que él
mismo se encarga de mantener en un buffer. Los cambios realizados sobre el fichero solo se graban
cuando se invoca algún comando de grabación.
Para invocar el editor vi se hace mediante: vi fichero. Si el fichero existe lo carga en el buffer de
trabajo.
Además, la orden para invocar el editor vi tiene una serie de opciones, las más importantes son:
r Cada cierto tiempo `vi' salva el buffer de edición en disco. De forma que si se produce cualquier
fallo en el sistema, siempre se encontrará una copia reciente del fichero que se editaba.
R Indica que solo se editará el archivo para consulta. No permitiéndose realizar cambio alguno sobre
la información.
wn Normalmente `vi' utiliza la pantalla completa como ventana de edición. Mediante esta opción se
podrá alterar el tamaño de la ventana de edición a un número de líneas determinado por n.
Podemos utilizar la opción + , que permite entrar en el vi en la línea que le indiquemos. Por ejemplo:
Vi +7 fichero Editará el fichero indicado y tomará como línea actual la 7.
Vi +$ fichero Editará el fichero indicado y tomará como línea actual la última línea del fichero.
Vi +/cadena fichero Editará el fichero indicado y tomará como línea actual la primera línea que
contenga la cadena indicada.
El editor vi tiene tres modos de trabajo diferente:
17
♦ Modo comando: Es el modo en el que queda el editor al entrar. En él cada pulsación de una
tecla se interpreta como un comando, no siendo posible la introducción de texto.
♦ Modo texto: Cada pulsación de una tecla se interpreta como un carácter a introducir al texto
editado. Es el modo indicado para añadir información al fichero que se está editando.
♦ Modo ex: Se podrán utilizar los comandos del intérprete ex, que en muchos casos son iguales
que los comandos ed. Para pasar a este modo se debe estar en modo comando.
A continuación estudiaremos un esquema para conocer cómo se cambia de un modo de trabajo a otro:
Una característica interesante del editor vi es que permite la edición múltiple de ficheros. Es decir, la
posibilidad de editar conjuntamente varios ficheros. Esto puede hacerse de dos formas:
• Al entrar mediante línea de comandos: vi fichero1 fichero2 fichero3. Inicialmente se editará fichero1
, pero podemos editar el siguiente mediante el comando n, es necesario escribir los cambios del
fichero actual antes de editar el siguiente. Para volver a editar el primer fichero de la lista utilizar el
comando rew.
• Estando ya trabajando con vi mediante el comando e fichero2. Si se está editando un fichero, puede
llamarse a otro fichero para que se edite conjuntamente con el actual. Para editar el fichero anterior
puede utilizarse el comando e#.
Al entrar en vi pasa directamente al Modo Comando.
Comandos del editor vi y Función que realizan
MODO TEXTO. Cuando estamos en modo de entrada, todo el texto que introduzcamos formará
parte del fichero.Los NEWLINE marcan el final de línea, y habilitan la siguiente. El BACKSPACE
suprime el carácter de la izquierda, así hasta el principio de la línea, pero no se permite ir a la línea
anterior. La tecla ESC permite pasar de modo entrada a modo comando.
^u + <ESC> Cancela la última inserción realizada.
^w + <ESC> Cancela la última palabra introducida.
<ESC> Vuelve al modo comando.
MODO COMANDO Al entrar en vi estamos en modo comando. Si estamos en modo de entrada y
queremos pasar a modo comando pulsaremos la tecla ESC.
Para comenzar a ejecutar un comando primero debemos situarnos en el punto en que queremos
modificar el texto.
MOVIMIENTO DEL CURSOR
Comando
Función
<ESPACIO> , ! , l
Avanza una posición a la derecha
<BS> , ! , h
Retrocede una posición a la izquierda
^n , ! , j
Avanza una línea
^p , ! , k
Retrocede una línea
+ , <intro>
Avanza al principio de la línea siguiente
−
Retrocede al principio de la línea anterior
0 (cero)
Retrocede al principio de la línea actual
$
Avanza al final de la línea actual
18
[n]G
Va a la línea n o a la última por defecto
[n]|
Va a la columna n de la línea actual o a la primera por defecto
w, W
Va al principio de la palabra siguiente
b, B
Va al principio de la palabra anterior
e, E
Va al final de la palabra actual
)
Va al final del fichero, al final de la última línea del texto
H
Va a la esquina superior izquierda de la pantalla
M
Va a la línea central de la pantalla
MOVIMIENTO DE LA PANTALLA
Comando
Función
[lin]^U
Desplaza hacia arriba media pantalla o el número de líneas indicado por lin
[lin]^D
Desplaza hacia abajo media pantalla o el número de líneas indicado por lin
^F
Avanza una pantalla completa
^B
Retrocede una pantalla completa
^R, ^L
Redibuja la pantalla
INTRODUCCIÓN DE TEXTO (PASO A MODO TEXTO)
Comando
Función
i
Inserta a partir del carácter actual
I
Inserta a partir del principio de la línea actual
a
Añade a partir del carácter actual
A
Añade a partir del final de la línea actual
o
Abre una línea bajo la actual y pasa a añadir al principio de la misma
O
Abre una línea sobre la actual y pasa a añadir al principio de la misma
BORRADO DE TEXTO
Comando
Función
[n]x
Borra el carácter sobre la posición actual del cursor, o bien, n caracteres
[n]X
Borra el carácter anterior a la posición actual del cursor, o bien, n caracteres
Borra el texto existente entre la posición actual del cursor y la posición que
se alcanzará mediante el comando de movimiento del cursor especificado,
por ejemplo:
d[movimiento cursor]
dw borra hasta el principio palabra siguiente
[n]dd
D
d) borra hasta el final del fichero
Borra la línea actual, o bien, n líneas a partir de la actual
Borra desde la posición actual del cursor hasta el final de la línea actual
Nota: El texto borrado se almacena en un buffer para poder ser recuperado.
MODIFICACIÓN DE TEXTO
Comando
Función
u
Deshace el último cambio sobre el texto
U
Deshace todos los cambios sobre la línea actual
r
Sustituye el carácter sobre el que está el cursor, por el que se pulse a continuación
R
Permite reescribir texto sobre la actual posición del cursor
19
s
Sustituye el carácter actual sobre el texto introducido a continuación
S
Sustituye la línea actual por el texto introducido a continuación
J
Une la línea siguiente al final de la actual
cw
Cambia la palabra actual desde la posición del cursor por un nuevo texto
c)
Cambia el texto, desde la posición actual del cursor hasta el final del fichero
CONTROL DE BUFFERS (BLOQUES)
Comando
Función
Almacena en el buffer indicado por letra, o en el buffer sin nombre, las
[letra][n]yy
n líneas siguientes a la actual, o la línea actual.
Almacena en el buffer indicado por letra, o en el buffer sin nombre, las
[letra] y [movim_cursor]
líneas existentes entre la posición actual y la indicada por la orden de
movim_cursor
Recupera el texto del buffer letra, o del buffer sin nombre, insertándolo
[letra]p
a partir de la línea actual
Recupera el texto del buffer letra, o del buffer sin nombre, insertándolo
[letra]P
antes de la línea actual
BÚSQUEDA
Comando
Función
Busca el patrón indicado desde la posición actual del cursor hasta el final del
/patrón
fichero
Busca el patrón indicado desde la posición actual del cursor hasta el
?patrón
principiodel fichero
n
Repite la última búsqueda
N
Repite la última búsqueda en el sentido opuesto al establecido
f[carácter]
Busca carácter dentro de la línea actual hasta el final de la misma
F[carácter]
Busca carácter dentro de la línea actual hasta el principio de la misma
; (punto y coma)
Repite la última búsqueda de carácter
, (coma)
Repite la última búsqueda de carácter en sentido opuesto
ZZ
Sale al intérprete de comandos almacenando el fichero actual si es necesario
ULTIMO COMANDO
. (punto) Repite el último comando.
MODO INTERPRETE `ex'
Todos los comandos de ex comienzan con el carácter : (dos puntos). Tenemos que estar en modo
orden.
CARGA Y GRABACIÓN
Comando
Función
Graba el contenido del buffer del editor en el fichero indicado, o en el fichero por
:w[fichero]
defecto
Graba el contenido del buffer del editor añadiéndolo al contenido del fichero
:w >>[fichero]
indicado, o en el fichero por defecto
Carga el contenido de fichero, o del fichero por defecto, añadiéndolo a partir de
:r[fichero]
la línea actual
20
:wq
:q
Grabar el fichero actual y salir del editor
Abandona el editor volviendo al intérprete de comandos
Abandona el editor volviendo al intérprete de comandos, sin realizar
:q!
comprobaciones de grabación
:x
Guarda el archivo si es necesario y sale al intérprete de comandos
EJECUCIÓN DE ÓRDENES DEL SISTEMA
Comando
Función
Ejecuta la orden indicada, añadiendo la salida de la misma a partir de la línea
:r!orden
actual
:!orden
Ejecuta la orden especificada
RECUPERACIÓN ANTE FALLOS EN EL SISTEMA
Comando
Función
:preserve
Almacena el fichero como si se hubiese producido un fallo en el sistema
:recover [fichero]
Recupera el fichero indicado o el actual
EDICIÓN COMPARTIDA DE FICHEROS
Comando
Función
:n
Edita el siguiente fichero de la lista con la que se llamó al editor
Edita el siguiente fichero de la lista con la que se llamó al editor, sin realizar
:n!
comprobaciones de grabación
:rew
Vuelve a editar el primer fichero de la lista con la que se llamó al editor
Vuelve a editar el primer fichero de la lista con la que se llamó al editor, sin realizar
:rew!
comprobaciones de grabación
:e[fichero]
Edita el fichero especificado, o el fichero por defecto
Edita el fichero especificado, o el fichero por defecto, sin realizar comprobaciones de
:e![fichero]
grabación
:e[#]
Vuelve a editar el texto que se editó antes del actual, o el actual por defecto
INFORMACIÓN DEL FICHERO ACTUAL
Comando
Función
:args
Muestra la línea de llamada al editor en la línea de estatus
:f
Muestra el nombre del fichero editado
:f nombre
Fija el nombre del archivo por defecto
ABREVIATURAS
Comando
Función
Establece que la cadena b es la expansión de la abreviatura a, cada vez que se
escriba la cadena a se expanderá el texto según b, ejemplo:
:abbr a b
abbr uc UNIDAD DE CONTROL
BÚSQUEDA Y SUSTITUCIÓN
Comando
Función
:[lin]s/expr/sust/g
Busca el texto expr dentro del rango indicado, sustituyéndolo por sust, donde:
; Indica que es un comando de ex
[lin] Marca el rango, expresado en números de línea, dónde se realizará la
búsqueda y posterior sustitución, según el siguiente formato:
21
[lin_inicial,lin_final] y dónde cada número de línea puede sustituirse por los
caracteres $ (línea final), . (línea actual), % (referencia a todo el fichero)
s Es el comando de sustitución
expr Es el texto a buscar
sust Es el texto a cambiar
g Indica que deben sustituirse todas las apariciones del texto expr dentro del
rango especificado
Ejemplos: :%s/volverán/vendrán/g
:1,$s/volverán/vendrán/g
:3,.s/volverán/vendrán/g
COMANDOS DE CONFIGURACIÓN DE OPCIONES
Comando
Función
Activa el modo de indentación automática, mediante el cual cada vez que se
pulsa <return> para terminar una línea, el cursor se sitúa en la línea de abajo
:set autoindent
pero no en la primera columna, sino en la columna dónde empezó a escribir
en la línea anterior
:set noautoindent
Desactiva el modo de indentación automática
Activa la grabación automática en la edición compartida de ficheros,
:set autowrite
mediantela cual, al editar otro fichero de la lista se graba el actual
:set noautowrite
Desactiva la grabación automática
:set ignorecase
Activa la no distinción entre mayúsculas y minúsculas al realizar búsquedas
Desactiva la no distinción entre mayúsculas y minúsculas al realizar
:set noignorecase
búsquedas, se buscará el texto que coincida exactamente con el tecleado
:set number
Activa la numeración de líneas
:set nonumber
Desactiva la numeración de líneas.
:set all
Visualiza la configuración actual
Muestra cualquier tipo de modo en el que se esté. Al activar esta opción en la
:set showmode
parte inferior derecha aparecen mensajes del tipo: INPUT modo texto,
COMMAND modo comando, etc
:set noshowmode
Desactiva la opción anterior showmode
CREACIÓN DE MACROS
Comando
Función
Crea la macro llamada nombre, que realiza las acciones que especifiquen
los comandos. Esta orden mapea cierta pulsación en el teclado para
:map nombre comando
convertirla en un comando. Para introducir una secuencia de escape, es
necesario pulsar anteriormente ^V. Otra de la secuencia necesaria para
crear macros es ^M que sustituye a <return>
:map! nombre comando
Indica que la macro operará en modo texto
:unmap nombre
Deshace la macro especificada
Ejemplos de macros:
22
:map ^F:!date^M Para que ^F y ^M surtan efecto antes pulsar ^
:map! LL ^[:q!^M La nueva orden LL sale sin grabar desde modo texto. Para que <esc> ( ^[ ) surta
efecto antes pulsar ^V.
:map Q :q!^M La nueva orden Q sale sin grabar desde modo comando.
:map! ZZ ^[:wq^M La orden ZZ, ya implementada, abandona el editor grabando.
OTROS COMANDOS
Comando
Función
:w>>fichero Añade lo editado al fichero indicado
Corre a la derecha un tabulador el número de líneas que le indiquemos, a partir de la
:>n
actual
Corre a la izquierda un tabulador el número de líneas que le indiquemos, a partir de la
:<n
actual
:>>n
Corre dos tabuladores a la derecha
:<<n
Corre dos tabuladores a la izquierda
:n
Desplaza el cursor a la línea que le indicamos
Escapa al shell, aparece el prompt PS1. Para volver a continuar con el editor pulsar
:sh
Ctrl d o teclear exit
OPCIONES POR DEFECTO
Comando
Función
Si se desea trabajar con una configuración personalizada de opciones de vi, se puede
crear el fichero .exrc en el directorio raíz del usuario. El usuario al invocar a vi y
.exrc
existir el fichero, configurará el editor con todas las opciones y comandos que
contenga. Es posible que algunos comandos de configuración no funcionen
correctamente por problemas de emulación
El editor emacs.
El nombre emacs significa Editor MACroS, que nació como una sustitución de un editor de textos
anterior llamado teco. Actualmente emacs es uno de los editores más usados y ampliamente instalados
disponible en el mundo Linux. Hay versiones emacs disponibles en casi todas las plataformas
informáticas conocidas en el sector, desde Linux a MS−Windows.
Una versión completa de emacs es muy grande, ocupando varios megas en disco. Es un editor
funcionalmente completo, muy potente y ampliado con funciones que van más allá de la edición de
textos. En algunas instalaciones se puede usar para editar archivos, mantener un calendario, trabajar
con e−mail, gestionar archivos, leer USENET o noticias de la red, usarlo como calculadora, etc. De
alguna forma, emacs es un entorno de trabajo que contiene un editor de textos. Una versión popular
de emacs se distribuye por medio de la licencia GNU. Esta versión fue creada por Richard Stallman
que es uno de los patriarcas de la Free software Foundation y del proyecto GNU.
El editor emacs no dispone de los dos modos básicos que tiene vi. Esto significa que todo lo que
escriba se coloca en la memoria intermedia. Para dar comandos al editor, para guardar archivos,
buscar textos, borrarlos, etc. debe usar otras teclas. En emacs se utiliza la tecla <ctrl> y <esc> para
ejecutar los distintos comandos.
INICIO, SALIDA Y AYUDA
23
Comando
emacs
emacs fichero
<Ctrl−x><Ctrl−c>
<Ctrl−h>
ESC
<F10>
Función
Inicia el editor sin fijar ningún fichero
Comienza la edición con el fichero especificado
Sale de emacs. Si no se ha guardado el fichero, pedirá confirmación
Llama a la ayuda de emacs
Retrocede. Salida de cualquier sitio
Acceso al menú
Copiar, cortar y pegar.
Cuando se suprime o corta caracteres estos se guardan en una memoria intermedia. Para pegar este
texto se utiliza <Ctrl−y>. Este comando también llamado comando yank, pega el objeto a la derecha
del cursor. Para realizar la operación de cortar y pegar de un bloque, hay que seguir los siguientes
pasos:
• Situar el cursor al principio del texto a marcar.
• Pulsar <Ctrl−barra espaciadora> para fijar la marca.
• Mover el cursor al final del bloque de texto. Así se crea lo que emacs llama una región.
• Suprimir el texto con <Ctrl−w>.
• Si lo que se pretende es copiar el texto antes de mover el cursor hay que volver a pulsar <Ctrl−y>. Si
lo que se desea es moverlo seguir con el siguiente paso.
• Situar el cursor en el punto del texto donde se quiera copiar el mismo.
• Pulsar <Ctrl−y> para pegar el bloque por debajo de la línea donde está el cursor.
COMANDOS BÁSICOS
Comando
Función
<Ctrl−x><Ctrl−s>
Guarda la memoria intermedia actual (texto editado) en disco
Escribe la memoria intermedia actual en disco, pregunta por un nuevo
<Ctrl−x><Ctrl−w>
nombre de archivo
<Ctrl−x><n>
Cambia el nombre del archivo de la memoria intermedia actual
<Esc><z>
Borra desde la posición actual hasta el carácter tecleado
Encuentra un archivo, lo lee en una nueva memoria intermedia creada con
<Ctrl−x><Ctrl−f>
el nombre del archivo
Lee el archivo dentro de la memoria intermedia actual, borrando el
<Ctrl−x><Ctrl−r>
contenido previo
Inserta el archivo dentro de la memoria intermedia actual en la posición
<Ctrl−x><Ctrl−i>
del cursor
<Ctrl−f>
Mueve el cursor un carácter hacia adelante
<Ctrl−b>
Mueve el cursor un carácter hacia atrás
<Ctrl−a>
Va al principio de la línea actual.
<Ctrl−e>
Va la final de la línea actual
<Ctrl−n>
Va a la línea siguiente
<Ctrl−p>
Va a la línea anterior
<Esc><f>
Avanza una palabra
<Esc><b>
Retrocede una palabra
<Esc><Shift −. >
Va al principio de la memoria intermedia
<Esc><Shift −, >
Va al final de la memoria intermedia
24
<Ctrl−d>
<Ctrl−c>
<Esc><d>
<Ctrl−k>
<intro>
<Ctrl−j>
<Ctrl−o>
<Ctrl−w>
<Esc><w>
<Ctrl−x><Ctrl−o>
<Ctrl−s>
<Ctrl−r>
<Ctrl−s>
<Ctrl−r>
Suprime el carácter donde se encuentra
Inserta un espacio
Suprime la palabra siguiente
Suprime hasta el final de la línea actual. Si el cursor está al principio de la
misma, la suprime entera
Inserta una nueva línea
Inserta una nueva línea y sangra.
Abre una nueva línea (no está claro cuando funciona, a veces funciona
como un intro y otras como se indica)
Suprime la región entre la marca y el cursor
Copia la región a la memoria intermedia de eliminación
Suprime la línea que está a los lados del cursor
Busca hacia adelante desde la posición actual.
Busca hacia atrás desde la posición actual
Repite búsqueda hacia delante
Repite búsqueda hacia atrás.
Pregunta antes de realizar una sustitución, se responde con:
<Ctrl−g> Cancelar la operación
<!> Sustituir el resto
<Esc><Ctrl−r>
<?> Obtener una lista de opciones
< . > Sustituir y salir donde se inició el comando
<y> Sustituir y continuar con la operación de sustituir
<n> No sustituir, pero continuar con la operación
<Ctrl−barra espaciadora> Fija una marca en la posición actual del cursor
<Ctrl−x><Ctrl−x>
Intercambia la marca y el cursor
<Ctrl−w>
Suprime la región marcada
<Esc−w>
Copia la región marcada en la memoria intermedia de eliminación
Inserta la memoria intermedia de eliminación en la posición actual del
<Ctrl−y>
cursor
<Ctrl−x><b>
Conmuta a otra memoria intermedia
Conmuta a la próxima memoria intermedia en la lista de memorias
<Ctrl−x><x>
intermedias
<Esc><Ctrl−n>
Va al final del fichero
<Ctrl−x><k>
Suprime una memoria intermedia que no se muestra
<Ctrl−x><o>
Cuando tenemos la pantalla dividida, cambia de una a otra
Divide la pantalla en n ventanas. Ventanas con las que podemos trabajar
<Ctrl−x><n>
máximo 2. Si ponemos un 3 la ventana actual se divide en dos
verticalmente y podemos ir haciendo más subdivisiones
Veamos a continuación como podemos solucionar problemas con emacs. Es posible que determinados
caracteres de control no funcionen en los terminales. Esto es debido a la emulación, es posible que no
se haya configurado la variable TERM. Para ello hay que realizar los siguientes pasos: TERM= tipo
25
de emulación. La emulación que se utiliza es vt100, pero da algunos problemas, la mejor es la vt200 o
ansi, aunque el telnet de Windows 3.11 no la incorpora.
Si la solución no llega por la emulación entonces podemos recurrir a dar las órdenes, no con
caracteres de control sino que con los comandos emacs. Para ello hay que realizar las siguientes
acciones:
<esc−x> nombredeorden Esta es la sintaxis para dar órdenes de emacs. Pero ¿Qué órdenes?.
A continuación veamos las dos que sustituyen a los caracteres de control que más problemas dan:
set−mark Establece una marca en la posición del cursor.(<Ctrl−barra espaciadora>)
yank Inserta el contenido del kill−buffer a partir de la posición del cursor(<Ctrl−y>).
Podríamos seguir poniendo toda la lista de comandos emacs, pero es mejor explicar como
consultarlos en la ayuda de emacs:
♦ Pulsar <Ctrl−h><Ctrl−h>
♦ <Ctrl−v> Muestra más pantalla de la ayuda.
♦ <q> Sale de la ayuda.
♦ <i> muestra el indice de comandos.
♦ <a> pregunta por una palabra, por ejemplo yank, y muestra todos los comandos que tienen
relación con esta palabra.
El editor joe.
Este editor es exclusivo de Linux. Es una de las múltiples aportaciones que se han hecho por
voluntarios a este Sistema Operativo. Es una imitación de Wordstart o de editor de entornos Borland,
como por ejemplo el editor del Turbo Pascal.
El inicio de joe es: joe fichero.
Para invocar a la pantalla de ayuda se pulsa ^KH. La pantalla de ayuda es la siguiente:
CURSOR
^B left ^F right
^P up ^N down
^Z previous word
^X next word
SEARCH
^KF find text
^L find next
GO TO
^U prev. screen
^V next screen
^A beg. of line
^E end of line
^KU top of file
^KV end of file
^KL to line No
BLOCK
^KB begin
^KK end
^KM move
^KC copy
^KW file
^KY delete
^K/ filter
DELETE
^D char
^Y line
^W > word
^O word <
^J >Iine
^− undo
^^redo
MISC
^KJ reformas
^T options
^R refresh
^@ insert
SPELL
^[N word
^[L file
EXIT
^KX save
^C abort
^KZ shell
FILE
^KE edit
^KR insert
^KD save
Resumen de comandos joe:
MOVIMIENTO DEL CURSOR
Comando
Función
^B
Mueve el cursor una posición a la izquierda
^F
Mueve el cursor una posición a la derecha
^P
Mueve el cursor una posición hacia arriba
26
^N
Mueve el cursor una posición hacia abajo
^Z
Mueve el cursor una palabra hacia la izquierda
^X
Mueve el cursor una palabra hacia la derecha
^U
Muestra la pantalla anterior a la actual
^V
Muestra la pantalla siguiente a la actual
^A
Mueve el cursor al principio de la línea
^E
Mueve el cursor al final de la línea
^KU
Mueve el cursor al principio del fichero
^KV
Mueve el cursor al final del fichero
^KL
Mueve el cursor a un número de línea concreto
BÚSQUEDA Y SUSTITUCIÓN
Comando
Función
^KF
Busca el texto especificado
^L
Repite búsqueda
BLOQUES
Comando
Función
^KB
Marca el inicio de un bloque
^KK
Marca el final de un bloque
^KC
Copia en la posición actual del cursor el bloque marcado
^KM
Mueve a la posición actual del cursor el bloque marcado
^KW
Graba el bloque marcado en un fichero
BORRADO
Comando
^KY
^D
^Y
^W
^O
^J
Función
Borra el bloque marcado
Borra el carácter de la posición del cursor
Borra la línea actual del cursor
Borra la palabra de la derecha
Borra la palabra de la izquierda
Borra desde la posición actual del cursor hasta el final de la línea
SALIDA Y GRABACIÓN
Comando
Función
^KX
Abandona la edición grabando
Abandona el editor. Pregunta si abandona los cambios al fichero. Contestar `Y' para
^C
no grabar
^KZ
Abandona la edición sin grabar y sin preguntar
^KE
Edita otro fichero, al pulsar <^C> vuelve al fichero original
^KR
Lee otro fichero y lo inserta en la posición actual del cursor
^KD
Graba el fichero y continúa con la edición
OTRAS ACCIONES
Comando
Función
^K/
Ejecuta un comando unix
27
^T
Muestra una lista de opciones del editor. Están a OFF/ON, pulsando <intro> o <barra
espaciadora> se activan o desactivan. Con flechas de desplazamiento se recorre la
lista. Con <^C> se abandona la lista de opciones. Esta lista contiene: activar inserción,
autoindentación, tabulación, márgenes, etc
El editor jed.
Este editor es una incorporación de Linux, lo realizó John E. Davis entre 1992 y 1993. Fue escrito en
un principio en cc, posteriormente en gcc y hay versiones en BCC 3.0 para PC
jed como editor es sencillo, mas adelante veremos sus principales comandos, pero jed es más que un
editor.
jed puede usarse como asistente para ayuda en muy diversas tareas, por ejemplo:
♦ Programar en c, c++, smalltalk, lisp, etc.
♦ Uso de emacs.
♦ Usos de los diferentes shell´s de Linux.
♦ Instrucciones sobre como contribuir al proyecto GNU.
♦ Explica como jed puede emular a emacs y wordstar.
Este editor se invoca poniendo: jed fichero
USO DEL EDITOR
Comando
Función
^X^C
Salir de jed
^V
Página arriba
<esc>V
Página abajo
^D
Borra el carácter bajo el cursor
^X^W
Graba el fichero
^X^F
Abre un nuevo fichero
^A
Va al principio de la línea
^E
Va al final de línea
Como hemos dicho antes, jed tiene un uso más interesante que el de editor. En concreto es utilizarlo
como asistente para ayuda. A continuación se explica cómo moverse por la ayuda:
ASISTENTE PARA AYUDA
Comando
Función
^H
Invoca a este asistente para ayuda. Aparece un pequeño menú
Es la opción del menú que muestra el asistente. Para elegir una de las opciones hay
I
que situarse con el cursor en la línea elegida y pulsar <intro>
Q
Sale de la ayuda y vuelve a la edición, desde el menú principal
D
Vuelve al menú principal.
H
Muestra un acerca de la ayuda
<ESC>
<ESC>
28
MODO TEXTO
MODO COMANDO
MODO EX
a, A i,I o,O
:/
MODO TEXTO
MODO COMANDO
MODO EX
29
Descargar