Sistemas Operativos Tema 1: CONCEPTO BASICO DE SISTEMA OPERATIVO • Concepto Dos tipos de S.O. : ♦ Windows ♦ U.N.I.X El sistema operativo se define como el soporte lógico que controla el funcionamiento del equipo físico. El Sistema operativo pertenece a la parte de Software. • Funciones del Sistema Operativo ♦ Controla el Hardware de la maquina, los programas y los datos. ♦ Maneja las asignaciones de porciones de recursos físicos a cada programa individual. ♦ Maneja directamente el hardware para conseguir una operación eficiente al mismo tiempo que garantiza un buen tiempo de respuesta. ♦ Hace posible que los distintos programas compartan la maquina sin interferirse. ♦ Maneja las entradas y salidas de los distintos dispositivos. ♦ Maneja la creación y mantenimiento de ficheros, facilitando la carga y ejecución de los programas, compartiendo entre ellos el tiempo y la memoria disponible. • Objetivos del Sistema Operativo ♦ Facilitar el trabajo al usuario ♦ Facilitar el dialogo y la comunicación entre el usuario y la maquina. ♦ Mejorar la comunicación con lenguajes de alto nivel. ♦ Facilitar información de un sitio a otro ♦ Seguridad y fiabilidad del sistema operativo. ♦ Estructuración de ficheros de todo tipo. ♦ Control sobre los recursos consumidos por cada programa. ♦ La intervención de los usuarios debe reducirse al mínimo posible. ♦ Rendimiento económico del sistema debe optimizarse. lunes, 18 de octubre de 1999 Evolución Histórica El primer S.O datan de 1955, desarrollado por General Motors, y se realizan para reducir los tiempos de espera de la unidad central de proceso (CPU , Central Process Unit) entre dos trabajos consecutivos. Estos, trabajan en monoprogramación. 1ª Generación de S.O • Al sistema operativo solo se le pide ayuda en operaciones de entrada y de salida de datos y la traducción de lenguajes ensambladores. 1 • Admón.. del Hardware la realiza un operador, que normalmente era el que había construido la maquina. 2ª Generación de S.O • Surge el IOCS ( Input Output Control System ) que independiza el programa del dispositivo. 3ª Generación de S.O • Marca la Evolución de los Sistemas Operativos. • Se produce un abaratamiento de la memoria principal. • Se aumenta la velocidad de los periféricos. • Se introducen canales para manejar periféricos a nivel físico de forma independiente a la CPU. Un canal es un dispositivo que libera trabajo a la CPU. • Aparece la programación en tiempo real o tiempo compartido, técnicas de aprovechamiento del procesador. • Primeros conceptos sobre redes de ordenadores. 4ª Generación de S.O • Se produce un abaratamiento de los procesadores • Lo micros evolucionan • Surge el Ordenador personal: Terminal inteligente de una red de ordenadores. Se conectan ordenadores para ganar tiempo. • Surgen las bases de datos relacionales, de gran importancia debido al volumen de datos. • Inteligencia artificial: sistemas expertos, automatización de oficinas, redes locales, etc.. Los primeros S.O se cargaban enteros en memoria, dejando poca para los demás programas. Por eso surgen los S.O de disco, que cargan a memoria los programas de control que mas utiliza el usuario dejando el resto de programas en disco. El núcleo del sistema operativo es la parte del mismo que esta cargado en la memoria. Sistemas operativos en disco: ♦ Núcleo: Parte del S.O cargada en memoria. ♦ S.O de disco: Parte que del S.O que se almacena en un disco, y que cuando es necesitada, se carga como un programa más. Estructura de un S.O ♦ Programas de Control: Tienen a su cargo las funciones de supervisión y aministración de los recursos del sistema. Son el Núcleo del S.O. ♦ Programas de Proceso: Encargados de facilitar el trabajo a los usuarios. ( Editores, traductores, utilidades, etc.. ) ♦ Programas de Aplicación: Los más utilizados por los usuarios se desarrollan apoyándose en los programas de proceso y se ejecutan bajo la supervisión de los programas de control. Tipos de Programa de Control: ♦ Cargador de Inicialización o IPL ♦ Supervisor ♦ Controlador de Trabajos ♦ Controlador de Datos 2 ♦ Administrador de Memoria Tipos de Programa de Proceso: ♦ Editores ♦ Traductores: ♦ Ensambladores ♦ Compiladores ♦ Intérpretes • Utilidades Tipos de Programa de Aplicaciones: ♦ Verticales: ♦ Nominas ♦ Contabilidad ⋅ Horizontales: ⋅ Hoja de Calculo ⋅ Sistemas Gráficos martes, 19 de octubre de 1999 Explicación de los programas de control: • Cargador de Iniciación o IPL(Initial Program Loaded): Programa que se encuentra en la memoria ROM, se ejecuta por circuitería y su misión es buscar en las unidades de disco el sistema operativo y cargarlo en memoria. Los S.O se cargan siempre en el mismo sector para que el IPL lo pueda localizar sin problemas. • Supervisor: Programa encargado del control del sistema. Sus funciones son: ♦ Cargar los programas en la memoria principal. ♦ Colocar las aplicaciones que ejecutamos en la memoria. ♦ Comunicación con el usuario. ♦ Comunicación con el controlador de trabajos cada vez que halla que ejecutar un programa. ♦ Comunicación con el controlador de datos cada vez que se realiza una operación de IO ( Input − Output) • Controlador de trabajos: Cargado en memoria por el supervisor cada vez que el usuario solicita la ejecución de un programa y su función consiste en controlar el incio, la ejecución y la finalización de los programas, devolviendo el control al supervisor al finalizar la tarea. • Controlador de datos: Programa que procesa todas las operaciones de entrada y de salida, comunicándose con los distintos periféricos. • Administrador de Memoria: Controla los accesos a memoria. ( Es necesario para aprovechar mas de 1MB de memoria ). En MSDOS si no se carga el Himem.sys estaremos trabajando con 1MB de memoria. 3 Explicación de los programas de Proceso: • Editores: Ayudan al programador para crear o modificar programas fuente. • Traductores: Son programas que convierten un programa fuente en codigo maquina. Tipos: ◊ Ensambladores: Traducen lenguajes de bajo nivel( similares al lenguaje maquina ). Por cada instrucción de lenguaje de bajo nivel se genera una instrucción en lenguaje maquina. ◊ Compiladores: Traduce todo el programa fuente antes de ejecutarlo ( Traduce lenguajes de alto nivel corrigiendo errores sintácticos). ◊ Intérpretes: Traduce una instrucción antes de ejecutarla, posteriormente traduce la siguiente y la vuelve a ejecutar y asi sucesivamente. De una instrucción de lenguaje de alto nivel se generan varias instrucciones en lenguaje maquina. • Utilidades: Son programas aportados por el sistema operativo para el tratamiento de ficheros y dispositivos. Definición de Proceso: Programa en ejecución, junto con un entorno asociado. Una instrucción detrás de otra. Cada instrucción de lenguaje maquina es un proceso independiete. Bloque de control de procesos: Un proceso se representa por un conjunto de datos que incluye el estado de proceso en cada momento ( Los recursos utilizados, los registros, las variables, etc... )Denominándose toda la información, bloque de control de procesos. Un bloque de control de procesos tiene unos objetivos: ♦ Localización de la información sobre el proceso por parte del sistema operativo. El S.O tiene que tener la posibilidad de localizar el proceso. ♦ Mantener registrados los datos del proceso en el caso de tener que suspender temporalmente su ejecución o reanudarla. 4 Un bloque de control de procesos contiene la siguiente información: ♦ Estado del Proceso: Esta información debera estar siempre cargada en la memoria principal. Contiene información relativa al contenido del controlador de programas. El contador de programas es un contador de instruccione que ejecuta un programa. El estado de los procesos puede ser de los siguientes tipos: • Activos: Aquellos que compiten por el procesador o estan en condiciones de hacerlo. Dentro de estos podemos distinguir: ♦ En ejecución: Estado en el que se encuentra un proceso cuando tiene el control del procesador. ♦ Preparado: Dispuestos para ser ejecutados. ♦ Bloqueados o en espera: No pueden ejecutarse por necesitar algun recurso que no esta disponible. • Inactivos: Aquellos que no pueden competir por el procesador. Podemos distinguir: ♦ Suspendido: Proceso suspendido en espera de un evento sin que halla desaparecido las causa de su bloqueo. ♦ Preparado: Proceso suspendido sin tener causas por las que estar bloqueado. ♦ Estado del procesador en cuanto a la prioridad de proceso. Todos los procesos tienen una prioridad. ♦ El modo de ejecución. ♦ Estado de los registros internos del ordenador. ♦ Estadísticas de tiempo y ocupación de recursos para la gestión de la planificación del procesador. ♦ Ocupación de la memoria interna y externa para el intercambio. ♦ Recursos en uso, ficheros en uso y privilegios en uso. EJERCICIO: Clasificar en que estado estan los siguientes procesos: 5 El proceso 1.1 esta es Ejecución El 2.2 esta Preparado El proceso 1.2, 1.3 y 1.4 esta en Espera El 2.3 y 2.4 esta en Espera El proceso 1.5 esta Preparado El 2.6 esta Preparado El proceso 1.6 y 1.7 esta en Espera El 2.7 y el 2.8 en Espera El proceso 1.8 esta Preparado El 2.9 esta Preparado El proceso 1.9 y 1.10 esta en Espera El 2.10 esta en Espera El 3.3 esta Preparado El 3.4 y 3.5 esta en Espera El 3.6 y 3.7 esta enPreparado El 3.8 y 3.9 esta en Espera. lunes, 25 de octubre de 1999 LOS DRIVERS • Definición: Es el software formado por un conjunto de archivos y tablas que ejecutan y controlan todas las operaciones de entrada y salida sobre cualquier periférico conectado al ordenador. Son particulares para cada dispositivo. Una vez cargados pasan a formar parte del núcleo del S.O. • Funciones: ◊ Definir las características del dispositivo al S.O. ◊ Inicializar los registros asociados al periférico, en el momento del arranque del S.O ◊ Habilitar y deshabilita el dispositivo para un 6 proceso. ◊ Procesar todas las operaciones de Entrada y de Salida solicitadas por un proceso. ◊ Cancelar todas las operaciones de Entrada/Salida en el momento que sea necesario y por cualquier motivo. ◊ Procesar todas las interrupciones hardware generadas por el dispositivo. ◊ Tratar los errores y estado del dispositivo haciendo la correspondiente comunicación con el usuario. LOS FICHEROS • Definición: Colección de datos estructurados de una forma particular y empleada con un determinado propósito. • Clasificación: ◊ Según su forma de utilización: • Ficheros de Entrada: Cuya información es introducida a la memoria del ordenador, y son creados con anterioridad al proceso que los utiliza. • Ficheros de Salida: Almacenan la información que sale de la memoria en los soportes de almacenamiento externo. Se crean durante la ejecución de un programa. • Ficheros de Entrada y Salida: Combinan las dos acciones, introducen y obtienen información de la memoria. ◊ Según su función: • Ficheros Maestros: También denominados permanentes, y son aquellos cuyo contenido es esencial para la aplicación que los utiliza. Varios tipos: ⋅ De Situación: Contienen en cada momento la información actualizada, utilizándose en procesos de tiempo real. ⋅ Constantes: Aquellas cuya información no suele alterarse debido a la naturaleza de los datos que contiene. Son utilizados sobre todo para consultas. ⋅ Históricos: Contienen información acumulada a lo largo del tiempo, obtenida de los ficheros de situación y son utilizados para la obtención de estadísticas. • Ficheros de Movimiento: Aquellos cuya información modifica la de los ficheros maestros, lo que conlleva la actualización de los mismos. • Ficheros de Trabajo: También denominados de maniobra, son los que utiliza el sistema para contener resultados intermedios de un 7 proceso. Finalizado este proceso el propio sistema los borrara. ( Archivos Temporales ) martes, 26 de octubre de 1999 CARACTERÍSTICAS DE LOS FICHEROS DE DATOS • El Tamaño: Se calcula en función de las longitudes de los registros, multiplicado por el numero de registros que contenga. Ej.: • El Crecimiento: Indica el incremento o decremento del tamaño del fichero. Ej.: • La Volatilidad: Indica en %, el movimiento de registros que tiene el fichero. Ej.: Si el % es Alto se dice que el Fichero es Volátil, si es bajo se dice que es Estático. • La Actividad: Muestra el % de registros que son accedidos en el proceso normal de un fichero. martes, 02 de noviembre de 1999 WINDOWS 95 • Definición: Sistema operativo gráfico, basado en tecnología de 32 bits, diseñado para conseguir que el usuario maneje el ordenador de forma sencilla y rápida. Windows 95 es una evolución de MS−DOS: 8 MSDOS, son las siglas de Microsoft Disk Operation System. Características de Windows 95 • Compatibilidad con dispositivos y aplicaciones diseñadas sobre 16 bits. • Facilidad con la que se ejecuta cualquier aplicación. • Facilidad para conmutar entre aplicaciones abiertas. • Posibilidad de utilizar hasta 255 caracteres como nombres de ficheros y carpetas. • Facilidad para gestionar objetos a través del explorador. • W95 es un sistema orientado a objetos. • Ofrece un mayor rendimiento en aplicaciones Windows y en aplicaciones DOS. • El soporte Plug & Play facilita la tarea de instalar y configurar un nuevo hardware. • Incorporación de aplicaciones integradas que permiten la comunicación con otros ordenadores. Requerimientos Hardware ♦ PC ♦ Mínimo un 386DX ♦ Mínimo 4 MB de RAM ♦ Entre 35 y 45 MB de HD ♦ Disquetera 3,5 High Density ♦ Raton ♦ VGA o Superior Windows 95 puede ser instalado desde disquetes sin necesidad del CD. Hardware Opcionales ♦ Impresora ♦ MODEM ♦ Tarjeta de Sonido y Altavoces. viernes, 05 de noviembre de 1999 ENTORNO NO GRAFICO DE WINDOWS 95 El S.O W95, evoluciona de su antecesor MS−DOS ( Microsoft Disk Operating System). Y al igual que este, W95 sigue estructurando la información de carpetas en forma de árbol. Un entorno no gráfico siempre es necesario, aunque no se use habitualmente, puede ser vital cuando el sistema grafico no puede ser inicializado, o tiene algún fallo de configuración que solo puede ser reparado mediante un sistema no gráfico. 9 Cuando abrimos una ventana MSDOS en w95, o reiniciamos el sistema en MSDOS, los primero que nos aparece en pantalla es algo como esto C:\>, se denomina PROMPT, y nos marca el directorio o carpeta donde actualmente estamos situados. Estemos en la unidad que estemos, siempre partimos de un directorio raíz, que se representa con el carácter `\'. Por eso se dice que es una estructura jerárquica de niveles. Toda carpeta o directorio tiene un nombre, y si estamos situados en una carpeta, el PROMPT nos dirá su ruta ( PATH) y el nombre de la misma. Creación, posición y borrado de carpetas en modo no gráfico. Comandos para trabajar con directorios: • <MKDIR> O <MD> : Nos permiten crear un directorio. Su modo de uso: MD [unidad:]nombre_de_directorio • <RMDIR> O <RD> : Comando que elimina carpetas o directorios. Para borrar una carpeta tiene que estar vacía, y además no podemos estar posicionados en ella. • <CHDIR> O <CD> : Estos comandos nos permiten posicionarnos en un directorio, avanzando con <CD> o retrocediendo con <CD..> para retroceder un nivel, <CD...> para retroceder dos niveles, y <CD\> para posicionarnos en el directorio raíz de la unidad. • <DELTREE> : Borra un directorio o carpeta y todo su contenido (todos sus posibles ficheros). Una vez borrado un directorio, la información y ficheros que este contenía no podrán ser recuperados. Si hacemos un DELTREE al directoria raíz, estaríamos borrando todo el contenido de la unidad. Se puede utilizar un nombre de ruta o PATH, para indicar al comando, donde se tiene que situar dicho comando para ejecutar la acción. Esto nos ahorra tener que situarnos nosotros en dicha carpeta para ejecutar el comando sobre la carpeta en la que queremos trabajar. Con esta colección de comandos podemos manejar las estructuras de directorios o carpetas. Cada carpeta que creamos nueva, genera dos nuevas entradas: . <DIR> .. <DIR> El punto hace referencia al propio directorio. El punto, punto hace referencia al directorio principal. Estos puntos representa de forma gráfica el nivel de carpeta o directorio en el que esta colocada dicha carpeta. En una ruta o PATH, jamás podrán existir espacios en blanco, ya que la estructura de archivos es una estructura rígida. 10 Comandos para la gestión de ficheros. • <DEL> : Este comando, elimina solo ficheros, pero en ningún caso puede usarse para eliminar directorios o carpetas. Su modo de uso: DEL [unidad:]Nombre_del_Fichero Posibles usos de DEL: < DEL *.* > Para borrar todos los nombres de ficheros con todas las extensiones. Es decir, borrar todos los ficheros. < DEL F*.*> Para borrar todos los archivos que comiencen por F, dando igual los caracteres siguientes a la F y la extensión de los archivos. Los *´s representan todos los caracteres posibles a partir de donde están situados. < DEL F?.*> Para borrar todos los archivos que comienzan por F y que tienen un carácter desconocido seguido de la F, dando igual su extensión. Este modo del uso de DEL no borra todos los archivos que comiencen por F, si no todos los archivos que comiencen por F y que sigan de tan solo un carácter que no es conocido. La interrogación a diferencia del *, solo sustituye el carácter donde esta situada. jueves, 11 de noviembre de 1999 LOS DISCOS Se componen de: • PISTAS • SECTORES • CILINDROS Todos los discos tienen una estructura similar. Están divididos en pistas y sectores. En el caso de un multipack ( un disco duro, donde hay mas de un plato) aparece un tercer elemento que son los cilindros. PISTAS: Círculos concéntricos que van desde el exterior al interior. Las pistas están numeradas, a la mas exterior se la denomina Pista 0 que es donde se encuentra la FAT(File Alocation Table). En la FAT se graba la pista, el sector y en el caso de los multipack el cilindro, que corresponde a la dirección donde se han grabado los datos. SECTORES: Porciones de pistas. Sirven como unidades de direccionamiento. Cada vez que leemos un disco estamos leyendo sectores dentro de alguna pista. En cada sector entran 512 Kb, tanto en la pista cero, como en la ultima pista. Cuanto mas pequeño sea el sector, mas densidad de grabación tiene, por lo que la densidad del sector es directamente proporcional al tamaño del mismo. 11 CILINDROS: Solo aparecen en multipack (discos con mas de un plato). Un cilindro nos indica las mismas pistas y sectores en todos los discos, es decir, pistas y sectores que coinciden en un mismo plano. DISCOS FLEXIBLES Discos 3 ½ de 1,44 Mb: Tienen 80 Pistas, numeradas de la pista cero a la pista 79. Se componen de 18 sectores. Discos 3 ½ de 720 Kb: Tienen 80 pistas, numeradas de la pista cero a la pista 79. Se componen de 9 sectores. Los discos duros no tienen una cantidad fija de sectores y pistas, ya que depende de los fabricantes y de la capacidad del disco. COMANDOS <CLS>: Abreviatura de Clean Screen, su única utilidad es la de borrar la pantalla. Su modo de uso es tan simple como escribir el comando CLS. <COPY>: La utilidad de este comando es la de duplicar datos de un sitio origen a un sitio destino. Su modo de uso: C:\> COPY [unidad:]nombre_fichero [unidad:]nombre_fichero Ej.: C:\> COPY AUTOEXEC.BAT A:\PEPE.BAT En este caso además de copiar el fichero autoexec.bat en la unidad A, estaríamos renombrando el archivo como PEPE. Esto ocurre cuando especificamos un archivo destino con un nombre diferente al de origen. Otros parámetros de COPY: Unidad PRN: :Este unidad hace referencia a la impresora. Si esta unidad es introducida como destino en un comando COPY, el destino de la copia será sacar por impresora el contenido del archivo origen. Ej.: C:\> COPY *.BAT PRN: Unidad CON: : Esta unidad hace referencia a la pantalla, de modo que si usamos esta unidad como destino en un comando COPY, el contenido del archivo origen será representado en pantalla. Parámetro NUL: Este parámetro o dispositivo suele usarse para ocultar la información de salida por pantalla de un programa. Si utilizamos este parámetro como destino en un comando COPY, no estaremos haciendo nada, ya que estamos duplicando la información en ninguna parte. Si este mismo parámetro se utiliza como destino en el comando MOVE, estaremos borrando 12 información, ya estamos moviendo datos a ninguna parte. lunes, 15 de noviembre de 1999 <MOVE> : En lugar de copiar ficheros, los mueve. Su modo de uso, es igual al de copy. Ej.: C:\>MOVE *.BAT C:\DOS\ <XCOPY> : Este comando se diferencia del copy, en que también puede copiar estructuras con carpetas y subcarpetas. Su modo de empleo es el siguiente: Ej.: C:\>XCOPY <ORIGEN> <DESTINO> Colocando el indicador /S después del destino, copiaremos las carpetas, subcarpetas y todos los ficheros contenidos en ellas. <TYPE> : Mediante este comando podemos visualizar el contenido de un fichero. Podemos visualizar cualquier tipo de fichero. [unidad:] nombre_fichero Ej.: Para ver el contenido del archivo config.sys C:\>TYPE CONFIG.SYS El comando type, solo puede representar un único archivo por ejecución, por lo que si cuando ejecutamos este comando, le indicamos que visualice varios archivos producirá un error. Ej.: C:\>TYPE *.BAT Si queremos visualizar el contenido de mas de un archivo en pantalla, deberemos utilizar el siguiente comando: C:\>COPY *.BAT CON: <REN> Este comando sirve para renombrar un fichero. Su modo de uso: [unidad:]nombre_fichero nuevo_nombre Ej.: C:\>REN C:\>CONFIG.SYS PEPE.BAT En este comando, no podemos señalar la ruta de destino, ya que se entiende que va ha ser la misma que la de origen, si la utilizáramos el programa o comando nos daría error. Ej.: 13 C:\>REN C:\CONFIG.SYS C:\PEPE.BAT Este forma de llamada a REN daría error. <DIR> : Este comando visualiza el contenido de un disco. Muestra el nombre, las extensiones, la fecha y hora de creación o modificación y también el tamaño de los archivos existentes en el disco duro. Debido a que los monitores en modo no gráfico, disponen de 23 líneas, la representación en pantalla esta limitada. Para solucionar este problema utilizamos el parámetro /P. Ej.: C:\> DIR /P Este comando lo que hace es mostrarnos el contenido de 23 en 23 líneas, pidiéndonos confirmación cada 23 líneas para representar las 23 siguientes. Para mostrar la información en columnas utilizamos el parámetro /W. Este parámetro nos muestra únicamente los nombres, omitiendo toda clase de detalles como son el tamaño, la fecha, etc.. Ej.: C:\>DIR /W Para ver el contenido de todos los directorios, subdirectorios y archivos que estos contienen, utilizamos el parámetro /S. Ej.: C:\>DIR /S Si queremos utilizar DIR como un comando de búsqueda, deberemos indicar un nombre de fichero, con una ruta donde el comando DIR deberá buscar el archivo en cuestión. Ej.: C:\>DIR archivo.bat /S Este comando buscaría el archivo.bat en todo el disco duro, incluyendo las subcarpetas de todos las estructuras. Si deseamos visualizar solo los directorios o archivos que no tengan ninguna extensión usaremos la forma: C:\>DIR C:*. Si solo deseamos visualizar los directorios, usaremos esta forma: C:\DIR /A:D Si deseamos visualizar los archivos de sistema, que existen en el disco duro utilizaremos la siguiente forma: C:\>DIR /A:S Si deseamos visualizar los archivos de solo lectura, que existen en el disco duro, utilizaremos la siguiente forma: 14 C:\>DIR /A:R Cuando hacemos un DIR, la información sale ordenada tal y como figura en la FAT(File Alocation Table). Si queremos visualizar la información ordenada por el nombre y no por la FAT, utilizaremos la siguiente forma: C:\>DIR /O:N IMPORTANTE: Los nombres de ficheros en el entorno no gráfico de Windows 9x, soportan un nombre de 8 caracteres y una extensión de 3. Si en Windows 9x creamos un archivo que supere en el nombre los ocho caracteres, en un entorno no grafico el nombre del fichero contendría el símbolo ALT 126 en el carácter numero siete. FICHEROS DE ENTORNO BATCH O BAT Son ficheros ejecutables del S.O y se comporta prácticamente igual que un EXE y un COM en cuanto a su llamada, ya que para ejecutar un BAT, tan solo deberemos hacer referencia a su nombre. Sin embargo lo que diferencia un BAT de un programa normal, es que un programa cuando produce un error detiene su ejecución sin finalizar el mismo, mientras que un BAT no finaliza hasta que no ejecuta la última instrucción. En un archivo BAT cada línea es una instrucción y se ejecutan por orden descendente, es decir de arriba abajo. El BAT más famoso por excelencia es AUTOEXEC.BAT, ya que es el responsable de la configuración del sistema bajo MSDOS. Mientras un BAT este en ejecución, el usuario no tendrá el control de la maquina, ya que se omitirá el PROMPT hasta la finalización del mismo. Dentro de un archivo BATCH, podremos ejecutar: ♦ Comandos propios del S.O . ♦ Llamadas a Programas ejecutables (EXE, COM). ♦ Comandos propios de los ficheros BATCH. ♦ Comentarios del programa. Para crear un fichero BATCH debemos ayudarnos de un editor ASCII(American Standard Code Information Interchange) martes, 16 de noviembre de 1999 En cada línea del archivo BAT ha de ir un comando de MSDOS. COMANDOS PROPIOS DE FICHEROS BATCH • <ECHO> Este comando sirve para utilizar comentarios externos, es decir, visibles para el usuario. Su modo de uso es el siguiente: echo comentario Ej.: 15 CLS ECHO Creando Carpetas... MD \1 MD \2 TYPE FICHERO • <ECHO OFF> Este comando desactiva la salida de las ordenes en pantalla. Para que esta línea tampoco aparezca hay que precederla de una @. Su modo de uso es el siguiente: @echo off Ej.: @echo off CLS MD \1 MD \2 • <ECHO.> Este comando produce una línea en blanco o salto de línea. Su modo de uso es echo seguido de un punto. echo. Ej.: @echo off CLS MD \1 MD \2 echo. echo. echo Esto es un comentario que aparece dos líneas después. • <REM> Establece comentarios internos para el programador en un programa BAT. Usaremos tantos REM como líneas usemos para el comentario. Ej.: REM Esto es un comentario interno REM que sigue en esta línea. 16 • <PAUSE> Produce una parada momentánea durante la ejecución de un programa. Ej.: @echo off cls MD \1 MD \2 ECHO Las carpetas han sido creadas con éxito. Pause • PARÁMETROS SUSTITUIBLES: Se hace referencia a ellos dentro del programa, pero se declaran en la llamada al propio programa BAT. Estos parámetros van precedidos del símbolo % , y tienen un rango del 0 al 9, siendo el 0 el propio nombre del BAT. Ej.: C:\>NOMBRE C1 C2 C3 NOMBRE.BAT @echo off md \%1 md \%2 md \%3 Donde %1 seria igual C1, %2 a C2 y C3 a %3. En definitiva funcionan como las variables en un exe. Un parámetro puede ser utilizado las veces necesarias en un mismo programa BAT. Al ejecutar este BAT, y poner los tres parámetros en la línea de comandos al llamar al programa, que en este caso serian tres nombres de directorios, el BAT crearía tres directorios con el nombre que le hayamos indicado, en el caso del ejemplo crearía tres directorios con el nombre de C1, C2 y C3. • <IF> Es utilizado para evaluar condiciones lógicas dentro de un programa BAT. También puede ser utilizado para saber si el usuario ha escrito los parámetros necesarios en la línea de comando del DOS. Su forma de uso: IF %1 = = VIS TYPE %2 Otro ejemplo: 17 IF X%1 = = X Salto /* Este se utiliza para saber si se han escrito parámetros suficientes */ • <GOTO> El goto y un nombre de etiqueta precedido por dos puntos produce un salto incondicional hasta la etiqueta. Identificamos una etiqueta mediante los dos puntos que la preceden. Esto hace que un programa BATCH pueda tener finales diferentes. El salto incondicional puede ser ascendente o descendente, es decir puede salta de una línea posterior a la etiqueta o desde una línea anterior a la misma. Ejemplo de GOTO: @echo off cls if not %1 == A goto si echo %1 es igual a A. Goto end :si echo %1 no es igual a A goto end :end En el caso de que el usuario no escriba parámetros se entenderá que no sabe utilizar el programa y por tanto será buena una sección de ayuda. VERIFICAR CARPETAS O FICHEROS CON EL CONDICIONAL IF • Verificar ficheros: Podemos comprobar la existencia de cualquier fichero de la forma: IF [NOT] EXIST file_name COMANDO • Verificar carpetas: Podemos verificar carpetas de la siguiente forma: IF EXIST %1\NUL GOTO SI Esto se debe a que todas las carpetas existentes contienen un NUL, independientemente de que contengan ficheros o no, basta con que exista un directorio con el nombre especificado. EJERCICIO: Desarrollar un programa BATCH que reciba como parámetro un nombre de fichero o directorio, y en el caso de ser un fichero visualizar su 18 contenido en pantalla, en el caso de que sea un directorio visualizar su estructura en pantalla: @ECHO OFF CLS IF X%1=X GOTO AYUDA IF EXIST %1\NUL GOTO DIRECT IF EXIST %1 GOTO FILE ECHO EL DIRECTORIO O ARCHIVO NO EXISTE GOTO FIN :DIRECT DIR %1 /P ECHO DIRECTORIO HA SIDO VISUALIZADO PAUSE GOTO FIN :FILE TYPE %1 ECHO FICHERO HA SIDO VISUALIZADO PAUSE GOTO FIN :AYUDA ECHO ESCRIBA UN NOMBRE DE ARCHIVO O DIRECTORIO GOTO FIN :FIN ECHO PROGRAMA FINALIZADO jueves, 25 de noviembre de 1999 PARÁMETROS INFINITOS Para no tener que hacer un reconocimiento por cada parámetro( verificar si 19 existe y que tipo de parámetro es), utilizamos el comando SHIFT y un bucle. El comando SHIFT se encargara de ir desplazando el numero del parámetro para que todos vayan pasando por el bucle. Esto lo hace restando una posición a todos los parámetros cada vez que se ejecuta, de modo que el parámetro dos pasa a ser el parámetro uno y el parámetro 1 pasa a ser el parámetro 0. Si queremos procesar en cada bucle una pareja de parámetros deberemos ejecutar el SHIFT dos veces, uno debajo de otro. Ej.: @echo off cls if x%1= =x goto ayuda :inicio if x%1= =x goto fin if exist %1\nul goto visual1 if not exist %1 goto error type %1 pause goto salto :visual1 dir %1 pause :salto shift goto inicio :ayuda echo Temas de Ayuda pause goto fin 20 :error echo Tipo de error pause goto salto :fin echo Mensaje de Salida Ejercicio: Hacer un programa que reciba un numero indeterminado de parejas de parámetros, siendo cada parámetro el nombre de un fichero. El primer parámetro será el origen de una copia y el segundo el destino. En caso de que el destino exista se informará al usuario y no se realizara la copia. @echo off cls if %1x==x goto ayuda if %2x==x goto error :inicio if %1x==x goto salida if %2x==x goto error if not exist %1 goto error if exist %2 goto existe copy %1 %2 :salto shift shift goto inicio :error echo Falta la pareja Destino goto salida 21 :ayuda echo Temas de ayuda goto salida :salida REDIRECCIONAMIENTO Modificar la entrada o salida estándar ( PANTALLA)de un comando: Esta función se puede realizar con el comando > . Ej.: TYPE FICH.TXT > PRN Este comando enviaría toda la información que contiene el archivo de texto FICH a la impresora. Siempre deberemos indicar tras el símbolo de redireccionamiento un archivo o dispositivo donde serán expuesto los datos. Si utilizamos un signo de direccionamiento y ponemos como destino un archivo existente, machacará su contenido, si el archivo no existe lo creara automáticamente. Para que no sobrescriba un archivo existente deberemos utilizar dos signos de direccionamiento de la siguiente forma: TYPE AUTOEXEC.BAT >> AUTOEXEC.BAK Si ponemos como destino la unidad NUL, la representación de los datos no se realizara en ningún caso. Tampoco creará ningún archivo. COMANDO FOR Existe un comando FOR para usar en los archivos BATCH: FOR %%A IN (...............) DO ECHO %%A El comando FOR repite el comando DO tantas veces como elementos existan dentro de los paréntesis. INSTALACIÓN DE WINDOWS 95 Lo normal es que se instale en otro sistema operativo. Windows puede ser instalado bajo MSDOS 3.2x o superior. Por lo que se puede instalar directamente desde MSDOS. Durante la instalación deberemos facilitarle un nombre de usuario, un nombre para la estación de trabajo y si hay establecidos grupos de trabajo, también nos pedirá un nombre para el grupo de trabajo. Existen cuatro tipo de instalaciones: 22 • Instalación típica: Es la instalación predeterminada y se recomienda normalmente por la mayoría de los usuarios. La intervención del usuario es mínima. En este tipo de instalación se nos pide: ⋅ Directorio de Instalación ⋅ Identificación del usuario y del equipo, y si trabajamos en red también el de grupo. ⋅ Confirmación para crear un disco de inicio. • Instalación portátil: Se recomienda para usuarios que utilizan PC portátiles, incluye ficheros y programas adecuados para este tipo de equipos. En esta instalación figurará el icono de mi maletín en el escritorio. Se instala software para el intercambio de información mediante un conector de red o cable. • Instalación Compacta: Es la opción utilizada para los usuarios que tienen un espacio limitado en el disco duro, instala únicamente los programas necesarios para ejecutar Windows 95. Esta instalación ocupa unos 19 MB. • Instalación personalizada: Opción para usuarios que desean seleccionar configuraciones de aplicaciones personalizadas. Se deben especificar los componentes de la red y configurar los distintos dispositivos. Solo instalara aquellos programas que hemos seleccionado. PROCESO DE INSTALACIÓN DE WINDOWS 95 ⋅ Modificación de los registros de inicio: Windows 95 guarda el S.O que había antes de instalar w95. Si instalamos w95 en un disco duro que no este gobernado por ningún S.O, w95 se limitará a instalar sus archivos de instalación propios. La instalación cambiará los nombres de los archivos de inicialización de MSDOS existentes y copia los ficheros IO.SYS y MSDOS.SYS. Mueve y modifica los registros y la pista de inicialización para que señalen al nuevo fichero <<IO.SYS>>. W95 guarda los archivos IO.SYS y MSDOS.SYS en un sector diferente, por lo que habrá que decirle al IPL la dirección de los nuevos archivos. La primera vez que se inicia la estación de trabajo, se lleva a cabo la configuración adicional de la pila de inicialización. Un vez se finaliza la instalación el sistema solicita ser reinicializado. Para que un S.O reconozca los cambios deberemos reinicializar la maquina. Una vez que Windows 95 ha copiado todos sus ficheros al disco duro, realiza una sustitución de los archivos CONFIG.SYS y AUTOEXEC.BAT por los ficheros que permiten que el cargador de inicialización o IPL acceda de modo real a los discos duros, una vez inicializado se carga el fichero WIN.COM que cargará el S.O al completo. Con MSDOS, el S.O era configurado mediante los archivos CONFIG.SYS y AUTOEXEC.BAT. En w95 estos dos archivos pasan a un segundo plano y cobran mas importancia los archivos WIN.INI y SYSTEM.INI que forman parte del registro de configuración de Windows 95. 23 Windows 95 usa los ficheros CONFIG.SYS y AUTOEXEC.BAT para agregar información sobre la pagina de códigos y la distribución del teclado. Windows 95 administra la memoria sin necesidad de cargar el gestor HIMEM.SYS mediante el archivo de configuración CONFIG.SYS ya que HIMEM.SYS es cargado mediante Windows 95 automáticamente al iniciarse. Ahora no es necesario AUTOEXEC.BAT para el arranque de Windows 95, ya que es W95 quien pasa el entorno inicial al COMMAND.COM con los directorios WINDOWS y \WINDOWS\COMMAND ( o el directorio donde esta instalado el S.O). Los ficheros antiguos de MSDOS los guarda con extensión *.DOS.(config.dos, autoexec.dos, command.dos). Estos archivos se deben a la inseguridad que hubo con W95 en los dias posteriores a su lanzamiento, ya que no se sabía con seguridad si iba a funcionar correctamente. INTRODUCCIÓN A LA ARQUITECTURA DE W95 Un procesador 80386 o superior puede dar soporte a varios niveles de privilegios para código ejecutable. Los distintos anillos proporcionan diferentes tipos de protección y niveles de privilegio. W95 nos ofrece los distintos niveles: Windows 95 tienes los anillos 1 y 2 pero no los utiliza. La transición entre anillos tarda una cantidad de tiempo relativamente grande, haciendo que algunos procesadores puedan tardar hasta diez veces más en completar la 24 transición del anillo que en ejecutar el código que llama la transición. Puesto que se proporciona suficiente protección mediante la utilización de dos anillos, w95 optimiza la velocidad y la protección utilizando los anillos 0 y 3. Windows NT también utiliza los anillos 0 y 3. ( El anillo 1 y 2 solo funcionan como filtros pero no se utilizan para nada. CONTROLADORES EN EL SISTEMA WINDOWS Un controlador es un conversor de software que acepta los diversos comandos del sistema operativo y los convierte en un comando especifico para un determinado elemento del hardware. Cuando usamos un comando del S.O, el controlador lo adapta automáticamente al dispositivo al que esta dirigido. Hace que podamos trabajar con el. La utilización de controladores permiten que las aplicaciones sean independientes al hardware que las usa. Por tanto podemos cambiar el hardware sin que afecte a la aplicación en cuestión. Los controladores conectan Windows al hardware y proporcionan independencia al dispositivo, si instalamos nuevo hardware podemos crear un nuevo controlador sin que sea necesario reinstalar el sistema operativo. TIPOS DE CONTROLADORES UTILIZADOS POR WINDOWS • Controlador del Sistema • Controlador del Teclado • Controlador del Ratón • Controlador de la Pantalla • Controlador del Sonido • Controlador de Comunicaciones • Controlador de la Impresora • Adaptador de Red TIPOS DE CONTROLADORES COMPATIBLES PARA WINDOWS Se utilizan para conservar la compatibilidad con las aplicaciones existentes. Son los siguientes: • Modo Real de MSDOS: Se carga en ficheros con extensión SYS. Normalmente en CONFIG.SYS • Modo Real de Windows 16 Bits: Se carga en ficheros con extensión INI y DRV. • Windows en Modo protegido: Se graba en ficheros con extensiones VXD o 386. Todos estos controladores se encuentran en la ruta \WINDOWS\SYSTEM y se utilizan para asumir aplicaciones ya existentes para sistemas operativos mas antiguos. Si un nuevo controlador no da soporte a un dispositivo, el controlador de MSDOS del archivo CONFIG.SYS se queda en un lugar y continua funcionando. 25 Los controladores en modo real son controladores para ejecutarse bajo MSDOS y no son tan seguros ni tan sólidos como los controladores en modo protegido. En modo protegido la protección la da el procesador. Los controladores en modo protegido aprovechan la arquitectura de los 80386 y superiores, permitiendo así un acceso mas rápido al dispositivo, sin utilizar los 640Kb inferiores de la memoria. ( MSDOS y Windows en modo real se cargan en los primeros 640kb. REGISTRO DE CONFIGURACIONES Lugar donde el sistema y las aplicaciones almacenan datos, por tanto es una base de datos jerárquica y en forma de árbol que se almacena en dos ficheros. Los ficheros reales que se utilizan pueden variar en función de la configuración del sistema pero se dividen en un fichero que contiene las configuraciones especificas de la maquina, normalmente se llama SYSTEM.DAT y un fichero que contiene configuraciones específicas del usuario, normalmente USER.DAT. El registro de configuraciones tiene seis claves: • HKEY_CLASSES_ROOT: Contiene la configuración del software y permite que Windows se ejecute o imprima desde una aplicación cuando se relaciona un fichero de datos especificado. • HKEY_USERS: Clave de los usuarios y contiene información a cerca de todos los usuarios de la estación de trabajo. • HKEY_CURRENT_USER: Contiene la configuración específica del usuario para el sistema y las aplicaciones, se crea en tiempo de ejecución a partir de la información que se carga desde la entrada de ese usuario en el registro de configuraciones de la clave HKEY_USERS ( Se crea una clave para cada usuario que figura en el HKEY_CURREN_USERS). • HKEY_LOCAL_MACHINE: Clave de la maquina local, contiene especificaciones para la estación de trabajo, los controladores y otras configuraciones del sistema. Es información especifica de la maquina a cerca del hardware, las asignaciones de los puertos y la configuración actual del software. NO CONTIENE INFORMACIÓN DE USUARIOS. • HKEY_CURRENT_CONFIG: Contiene información a cerca de la configuración actual del hardware conectado a la estación de trabajo. Se utiliza principalmente cuando existen varias configuraciones para la estación de trabajo y la información contenida en el registro de configuraciones en la clave HKEY_LOCAL_MACHINE. • HKEY_DYN_DATA: Contiene la información del estado dinámico de los diversos dispositivos, dicha información se genera cada vez que se inicia el sistema y se utiliza como parte de la información de medida del rendimiento y también para la configuración PLUG AND PLAY. (REGEDIT.EXE). EQUIPOS VIRTUALES EN WINDOWS 95 26 Es un entorno creado por el sistema operativo y por el procesador que simula los recursos de todo el equipo. MSDOS necesitaba todos los recursos para ejecutar una aplicación. W95 simula a las aplicaciones MSDOS que tiene disponibles todos los recursos del sistema. Se presenta ante una aplicación como si se tratara de un equipo completo. Por ello las aplicaciones tienen acceso virtual al hardware y a todos los demás recursos. Los equipos virtuales hacen que la programación sea más sencilla, de forma que el programador no tiene que preocuparse de hacer un seguimiento del uso del hardware o de otras aplicaciones, siendo el sistema operativo quien realiza el seguimiento de las aplicaciones y del hardware, determinando de que recursos puede disponer cada aplicación. Un equipo virtual esta diseñado para trabajar en el anillo tres, todas las aplicaciones basadas en Windows 95, funcionan en un equipo virtual (Comparten un equipo virtual). Windows 95 genera otro equipo virtual por cada aplicación basada en MSDOS(1 por cada aplicación DOS y una para todas las aplicaciones de W95). El equipo virtual basado en aplicaciones de Windows 95 se denomina Equipo Virtual del Sistema y va ha contener: ◊ Los componentes del sistema base: ♦ Núcleo ♦ S.O ♦ Usuarios ♦ Id. Grupo Y contiene además un espacio de direcciones compartido por aplicaciones basadas en 16 bits, y otro espacio de direcciones separado para cada aplicación basada en Windows de 32 bits. APLICACIONES BASADAS EN MSDOS Esperan disponer de acceso directo y exclusivo al hardware, cada aplicación basada en MSDOS, y que se ejecuta en Windows 95 utiliza un equipo virtual distinto. Ya que necesita de todos los recursos del sistema. APLICACIONES BASADAS EN WINDOWS 16 BITS Comparten un único espacio de direcciones en el equipo virtual del sistema, siendo posible que una aplicación de 16 bits entre en la memoria RAM de otra aplicación basada en Windows de 16 bits. Siendo esto necesario para permitir la compatibilidad con las aplicaciones de 16 bits existentes, que esperan poder interactuar entre si, compartiendo la memoria de esta forma. APLICACIONES BASADAS EN WINDOWS 32 BITS Cada aplicación tiene su propio espacio de direcciones en el equipo virtual 27 del sistema y estos espacios están protegidos por el hardware (Normalmente por el procesador). Por tanto no pueden entrar en la memoria RAM de otra aplicación de forma exclusiva. PROCESOS Y TAREAS Enfocado a Windows 95: Procesos: Un proceso es esencialmente una aplicación, y cada proceso tiene memoria y acceso a los recursos del sistema. Un proceso para Windows 95 es una aplicación o un programa (Conjunto de todas las instrucciones de las que se componen). Es un programa ejecutable que define los datos y el código inicial. Un espacio de direcciones de memoria en el que se almacenan los datos y el código del proceso, los recursos del sistema, y al menos una tarea para ejecutar el código. Cada proceso ejecuta al menos una tarea. Las aplicaciones basadas en MSDOS y Windows de 16 bits tienen una sola tarea por proceso, de modo que si ejecutamos una aplicación de este tipo, vamos a tener una aplicación en espera, en ejecución o bloqueada. Las aplicaciones de 32 bits pueden tener varias tareas por proceso, de modo que mientras se esta ejecutando un proceso de impresión, podemos editar un fichero de texto. Tareas: Unidad de ejecución, es el componente real de un proceso que se ejecuta en un momento dado. Además una tarea que se ejecuta utiliza el espacio de direcciones del proceso y los recursos asignados a dicho proceso. ¿ Que comprende una tarea ? Comprende un estado del procesador que incluye el puntero de la instrucción actual. La tarea guarda la instrucción en ejecución. Windows 95 dispone de una pila para utilizarla cuando se ejecuta en modo usuario (Pila se define como una estructura de datos en memoria) y ademas tiene una pila cuando se ejecuta para ser utilizado en modo núcleo. Utiliza la pila para ejecutar procesos del anillo 0 o del anillo 1. En un programa de múltiples tareas el programador tiene la responsabilidad de garantizar que las tareas no se interfieran una con otras, esto puede conseguirse utilizando recursos compatibles, de forma que no se entre en conflicto con una tarea que esta utilizando un determinado recurso. TIPOS DE MULTITAREA Dos tipos: ♦ Multitarea con asignación prioritaria ♦ Multitarea con asignación cooperativa Dependiendo de una aplicación u otra utiliza un tipo de multitarea o el otro. 28 MULTITAREA DE ASIGNACIÓN PRIORITARIA Cada tarea se ejecuta durante un periodo de tiempo preestablecido o hasta que otra tarea con prioridad superior este preparada para ejecutarse(Básicamente es un tiempo compartido, con la diferencia que una aplicación con preferencia se ejecuta antes que las de menos preferencia). La planificación la lleva a cabo el Sistema Operativo sin la participación de la aplicación. Esto es así para evitar que una aplicación pueda monopolizar el procesador. Para impedir que tareas de diferentes procesos accedan a un recurso que no se pueda compartir la aplicación puede establecer semáforos para bloquear el recurso hasta que se deje de ejecutar y el recurso quede libre. ( Un semáforo es un indicador para informar que recursos están disponibles). Las aplicaciones basadas en MSDOS y Windows 32 bits utilizan la multitarea con asignación prioritaria, las aplicaciones MSDOS eran monotarea y por tanto serían incompatibles con Windows 95 si no incorporasen este tipo de multitarea. MULTITAREA CON ASIGNACIÓN COOPERATIVA También denominada sin asignación prioritaria, una tarea se ejecuta hasta que renuncia voluntariamente al procesador, la aplicación determina cuando deja de ejecutarse la tarea, las aplicaciones de 16 bits se ejecutan en este tipo de multitarea. El repartidor de multitarea con asignación prioritaria trata a todas las aplicaciones de 16 bits como una única tarea. Esta multitarea es necesaria para mantener la compatibilidad con las aplicaciones de 16 bits que esperan poder controlar sus propia ejecución. MEMORIA VIRTUAL EN WINDOWS 95 Windows 95 virtualiza la memoria de la misma forma que virtualiza la maquina y los controladores. Esto permite que las aplicaciones se comporten como si tuvieran su propia memoria RAM física. La memoria virtual es la forma en que un programa ve a la memoria(Ya que la tienen toda virtualmente). A cada aplicación se la asigna un espacio de direcciones virtuales exclusivo, que será el conjunto de direcciones de memoria que utilizará para la paginación. Las aplicaciones acceden a memoria a través de direcciones virtuales que el administrador de memoria de Windows 95 asigna a direcciones físicas que comprenden ubicaciones de la memoria RAM o del HD. El S.O puede asignar más memoria de la que esta físicamente disponible en la estación de trabajo utilizando las posibilidades de paginación en función de la demanda del procesador. 29 Para ese fin el código del programa y los datos que se encuentran en la memoria física pueden trasladarse a un fichero de intercambio real que se encuentra en el HD. El fichero de intercambio cambia de tamaño según las necesidades del sistema, si el espacio de la unidad de disco empieza a escasear, se disminuye el tamaño del fichero, si por el contrario a espacio suficiente y se necesita memoria se aumenta el tamaño del fichero. PLUG & PLAY (CONECTAR Y LISTO) Es tanto una filosofía de diseño como un conjunto de especificaciones sobre la arquitectura específicas de PC´s. Se trata de un conjunto independiente de especificaciones desarrollado por un grupo de fabricantes de Hardware y de empresas de Software. La finalidad del PLUG & PLAY es permitir el cambio de la configuración sin que sea necesaria la intervención del usuario. El sistema determina cual es la configuración óptima y las aplicaciones se ajustan automáticamente con el fin de aprovechar al máximo la nueva configuración. Para las funciones Plug & Play Windows 95 incluye los siguiente componentes: • El administrador de configuraciones: Es el software que controla el proceso de configuración y mediante el cual puede establecerse la comunicación con todos los componentes que participan en dicho proceso. • El árbol de Hardware: Es una base de datos de información almacenada en la memoria RAM que se utiliza para configurar el sistema. • Enumerador de Bus: Son controladores para identificar todos los dispositivos de un bus concreto así como sus requisitos de recursos. • Arbitro de Recursos: Son controladores que asignan recursos a todos los dispositivos. Arbitro de Recursos Parte del sistema operativo que asigna tipos específicos de recursos a los dispositivos que solicitan los mismos recursos. Si diferentes dispositivos necesitan los mismos recursos, los dispositivos deben ser capaces de proporcionar al sistema operativo información acerca de los requisitos de recursos alternativos. Siendo el Sistema Operativo quien utiliza esta información para identificar una configuración que funcione. Son cuatro los recursos que controla el arbitro de recursos: ⋅ Líneas de solicitud de interrupción (IRQ´s) ⋅ Canales de acceso directo a memoria (DMA´s) ⋅ Direcciones de memoria ⋅ Direcciones de puertos de E/S 30 Administrador de Configuraciones Coordina todo el flujo de operaciones llevada a cabo por todo los componentes implicados en la configuración. Coordina la comunicación entre los enumeradores de Bus, el árbol de hardware, el registro, los controladores de dispositivos y el arbitro de recursos. Notifica a los controladores de dispositivos y a las aplicaciones cualquier cambio presente o pendiente en la distribución del sistema. Para trabajar o configurar algo de manera manual lo haremos mediante el Administrador de Dispositivos. ADMINISTRADOR DE SISTEMAS DE ARCHIVOS INSTALABLES Cada sistema operativo tiene un sistema de archivos diferente. El administrador IFS(Install File System ) se encarga de la interacción de los sistemas de ficheros. Los controladores de los sistemas de ficheros son componentes del anillo 0. Si falla el sistema de archivos, estará fallando inevitablemente el sistema entero. Windows 95 incluye tres sistemas de ficheros: • VFAT: Tabla de asignación de ficheros virtual de 32 Bits. • CDFS(CD Files System): Sistema de archivos del CDROM. • REDIRECTOR: Se utiliza para el acceso a redes. VFAT Es el acceso a ficheros de 32 bits característico de Windows 95, se trata de un fichero FAT de MSDOS virtual a 32 bits. El fichero VFAT.VxD es el controlador que se encarga de la virtualización y utiliza código de 32 bits para el acceso a todos los ficheros. Utiliza la FAT del MSDOS pero ampliada. COMPATIBILIDAD DE NOMBRES LARGOS La longitud máxima de Windows 95 es de 255 caracteres, pero además le asigna un nombre corto de 8 caracteres mas 3 de la extensión. Windows 95 no diferencia entre mayúsculas y minúsculas, pero si las respeta. La ruta máxima que puede indicarse es de 260 caracteres. El nombre de cada archivo es exclusivo. Para convertir un nombre largo a un nombre corto Windows 95 coge los seis primeros caracteres e introduce el símbolo ~ , le pone un indicador de frecuencia y coloca la extensión. Ej.: Trabajo de Ciencias.Doc −> Nombre Largo 31 Trabja~1.Doc −> Nombre Corto FINAL DEL PRIMER CUATRIMESTRE SISTEMA OPERATIVO UNIX ⋅ ANTECEDENTES DE UNIX • 1969: Ken Thompson de los laboratorios BELL desarrolla la primera versión de este S.O. Unix podría funcionar con un solo usuario. Ken, desarrollo este sistema para gobernar su propia maquina, pero con el tiempo este sistema llegaría a los PC. • 1971: Se rescribe el UNIX en lenguaje B. En este mismo año Dennis Ritchie expande el lenguaje B dando paso al lenguaje C. • 1973: Se vuelve a rescribir UNIX pero ahora en lenguaje C, dando lugar a la versión UNIX 5. • 1975: Aparece la versión UNIX 6 para entornos de investigación y educación, además se comienzan a desarrollar los primeros permisos de utilización( jerarquía de usuarios ). • 1977: Se vuelve a rescribir el UNIX, dando paso a la versión UNIX 7, esta versión se lleva también a los PC. • 1981: Aparece la versión UNIX III, es una actualización del UNIX 7. Esta nueva versión incluye versiones de utilidades para el mantenimiento de programas y es plataforma para los versiones XENIX III y XENIX V (Xenix es un UNIX orientado al mundo del PC.). • 1983: Aparece la versión UNIX 5 ( también llamada UNIX SYSTEM 5) y que es la esta actualmente en el mercado. El S.O ha seguido evolucionado hasta ahora. ⋅ CARACTERÍSTICAS DEL ENTORNO UNIX • Portabilidad: Es posible adaptar fácilmente el S.O a diferentes ordenadores de distintos fabricantes. Puede ser un PC o un equipo grande. • Propósito General: Es un S.O al que se le pueden aplicar muchos y diferentes entornos de usuario. • Multitarea: Permite la ejecución simultanea de varias tareas. • Tiempo Compartido: A cada tarea se le asigna un tiempo de ejecución. • Multiusuario: Mas de un usuario pueden acceder al sistema al mismo tiempo. Vamos a utilizar una conexión al servidor para el intercambio de ficheros, además para el intercambio de información utilizaremos el protocolo FTP ( File Transfer Protocol ). • Unix al igual que Windows 95 trabaja con el código ASCII( American Standard Code ) • Interactivo: Cualquier usuario puede comunicarse con el sistema y recibir respuesta inmediata a su solicitud de ejecución. Hay veces que algún demonio se esta ejecutando y relentiza el funcionamiento normal de la maquina. • Fácil modificación y mantenimiento: Se debe a que es un S.O escrito en lenguaje C, además es un sistema operativo abierto, por lo que podemos modificar libremente los comandos y realizar su mantenimiento. 32 • Estructura de Archivos: Utiliza una estructura jerárquica en forma de arbol que permite una fácil organización de ficheros, tanto del sistema como del usuario. • Tenemos un directorio raíz, un directorio particular para cada usuario, donde el usuario podrá realizar todas las operaciones en el, sin embargo fuera de el solo lo que permita el administrador. • Comunicaciones: Se pueden establecer redes de comunicación UNIX a UNIX, por medio de unas utilidades aportadas por el propio S.O ( Usa protocolo TCP/IP). • Background Process: Consiste en pasar un proceso al estado preparado para que se ejecute cuando la CPU esté desatendida, devolviendo inmediatamente el control al usuario. • Aporta facilidades para la automatización de procesos de oficina: • Cada usuario tiene un correo dentro del sistema. • Dispone de un Noticiario para dar noticias a todos los usuarios. • Servicio de Mensajería en tiempo real(CHAT). • Permite la transferencia de archivos entre usuarios. ⋅ ESTRUCTURA DE UNIX Tiene una estructura de tres niveles y tiene forma de anillos ( Forma envolvente). La shell es diferente dependiendo del nivel de usuario. KERNEL: También denominado núcleo del sistema operativo, en el se gestionan los recursos del ordenador y se ocupa de los discos, cintas, impresoras, terminales, líneas de comunicación, y cualquier otro dispositivo. Cada vez que conectamos un terminal se lo tenemos que decir al S.O, creando un fichero por cada terminal.( Todo lo que se conecta al sistema esta representado por un fichero de configuración). 33 Las funciones del Kernel: ♦ Control de Acceso a discos. ♦ Control de Acceso a terminales y dispositivos de E/S ♦ Control de los procesos. ♦ Manejo de la memoria. SHELL: Intermediario entre el usuario y el Kernell, y se encarga de interpretar los comandos tecleados por el usuario y ejecutarlos. Existen distintos tipos de Shell que dependen del nivel del usuario, por lo que existen distintos intérpretes de comandos. ( El nivel lo asigna el administrador cuando crea el usuario). Los distintos interpretes: ♦ Bourne Shell: Es la shell estándar, la mas corriente. Nos permite hacer cosas importantes y tiene dos tipos de PROMPT: ♦ $ : Lo utiliza el usuario final ♦ # : Lo utiliza el Súper Usuario. ⋅ C Shell : Es la shell utilizada en programación C, se debe a que los comandos son similares a los del lenguaje. Su prompt es el % . Para usuarios que programen o actualicen el sistema. ⋅ Virtual Shell: Exclusiva del S.O, enfocada a entornos virtuales. ⋅ Restricted Shell: Es una shell en la que se restringen los comandos a utilizar. ⋅ UUCP Shell: Shell especial orientada a la transmisión de datos ( Cuando queremos conectar dos equipos UNIX). Lo que hace es que dependiendo del usuario hará unas cosas u otras dentro del sistema. APLICACIONES: Las aplicaciones siempre se ejecutan por encima de la shell. Se divide en: ⋅ Lenguaje C, cobol, fortran, etc.. ⋅ Utilidades ( Herramientas y comandos que incluye el sistema operativo para facilitar la labor al usuario.) ⋅ Otras aplicaciones que serán incluidas por el administrador en el sistema operativo. ♦ CONCEPTOS BÁSICOS ♦ Concepto de Usuario: Es el propietario o creador de un fichero o directorio. Persona que puede conectarse al sistema. Podemos ceder la propiedad de un fichero o directorio a otro usuario perdiendo los derechos sobre dicho objeto. ♦ Concepto de Administrador: Encargado de mantener el funcionamiento eficiente del sistema. Se encarga de las siguientes funciones: ♦ Encendido y apagado lógico del sistema. ♦ Instalar nuevas releases ( 34 versiones ). ♦ Instalar nuevo software. ♦ Configuración de dispositivo y usuarios. ♦ Optimización del sistema. ♦ Copias de seguridad ( Backup ). ♦ Concepto de Súper usuario: Es un usuario especial que tiene permitido el acceso a las propiedades de todos los usuarios y puede realizar cualquier actividad. En muchos entornos el súper usuario también es el administrador. ♦ Concepto de Grupo: Conjunto de usuarios que están dados de alta en el sistema con las mismas restricciones, permisos y propiedades bajo un mismo nombre. Todo usuario pertenece a un grupo de trabajo. Al crear un usuario se le asigna una Shell, un directorio y un grupo de trabajo. ♦ Concepto de Resto: Todos los usuarios que no pertenecen al grupo del propietario de un fichero. Para los usuarios pertenecientes a un mismo grupo el resto se refiere a todos los usuarios ajenos a dicho grupo. ALMACENAMIENTO DEL S.O EN EL HD Principales directorios: / ROOT: Directorio Raíz, de este directorio parten todos los demás directorios, este directorio siempre existe. Se representa con la barra / y no con \ como en Windows 9x, en ningún 35 caso se utilizara la palabra ROOT para acceder al directorio raíz. ◊ Directorio < bin >: Contiene ordene o comandos del sistema. Cualquier librería del sistema esta dentro de este directorio. ◊ Directorio < dev >: En este directorio se encuentran los drivers o dispositivos periféricos conectados al sistema, ya que cualquier periférico que este conectado al mismo tiene un fichero de configuración en este directorio, por lo que si no existe el archivo dentro del directorio no existe el periférico. ◊ Directorio < etc >: En el se encuentran ficheros del sistema y configuración, este directorio contiene a su vez directorios y archivos que pueden ser modificados, pero que en ningún 36 caso pueden ser borrados. ◊ Directorio < lib >: En este directorio se encuentran las librerías del sistema. Podemos encontrar programas que podemos añadir al S.O. ◊ Directorio < tmp >: Almacena ficheros temporales creados por el sistema. Existen más directorios temporales ( Para poder añadir una disquetera sobre ellos ). ◊ Directorio < usr >: Normalmente se encuentran los directorios de trabajo de los usuarios que están dados de alta en el sistema y existe un directorio de trabajo por cada usuario, donde este podrá hacer lo que quiera. Además este directorio contiene: • Directorio < adm >: Contiene ficheros de administració • Directorio < bin >: Al estar enlazado con el directorio 37 < bin > ubicado en el directorio root, siempre van a contener ambos los mismos directorios y ficheros. • Directorio < lib >: Al igual que el anterior es un enlace con el directorio < lib > ubicado en el directorio root. • Directorio < spool >: Contiene directorios y ficheros relacionados con la 38 cola de impresión. Cuando conectamos al servidor, este nos sitúa automáticamente en el directorio correspondiente a nuestro username y password. A este directorio se le denomina directorio de conexión.( Cada usuario dispone de su propio directorio de conexión ). PERMISOS EN UNIX Todos los ficheros o directorios del sistema tienen tres tipos de permisos que indican el tipo de operación que se puede realizar sobre ellos. Dependiendo de si es un fichero o un directorio se podrá hacer una cosa u otra. Los permisos son los siguientes: ◊ Permiso de lectura < r >: Para un fichero significa poder leer el contenido del mismo ( si este es código ASCII o ANSI ). En el caso de un directorio, va ha significar que los archivos que estén dentro del directorio no están protegidos contra lectura, y por tanto, podremos listar el contenido del mismo y ver el contenido de los ficheros contenidos en dicho directorio. ◊ Permiso de escritura < w >: En un fichero significa 39 que podemos modificar el contenido de un fichero, al igual que podemos eliminarlo. En el caso de un directorio nos permite añadir ficheros y borrarlos, también podríamos borrar el directorio. ◊ Permiso de ejecución < x >: En el caso de n fichero nos permite ejecutarlo siempre y cuando este fichero sea ejecutable. En el caso de un directorio, significa que nos permite posicionarnos dentro del directorio para ejecutar cualquier programa que este contenga. Si el sistema no nos permite modificar un archivo del sistema, realizamos una copia del fichero, al haber creado nosotros dicha copia, somos propietarios de ese fichero, por lo podemos hacer con el lo que queramos, y por tanto trabajar libremente sin restricciones. Cada fichero del sistema dispone de 9 permisos: 3 para el propietario del fichero o directorio. 3 para el grupo de trabajo. 3 para el resto de los usuario. El propietario de cada fichero configura estos permisos. 40 FORMATO GENERAL DE LOS COMANDOS ◊ Un comando se compone generalmente de : Nombre del comando: Indica a la shell que debe hacer o ejecutar. Opciones: Son caracteres que modifican las acciones de los comandos y que van precedidas por un guión. En UNIX todas las opciones que indiquemos en la línea de comandos, irán precedidas por un solo guión que abarcará a todas ellas. Ej.: $ comando −abcd Argumentos: Serán nombres de ficheros o directorios sobre los que va a actuar el comando. Los comandos de UNIX admiten más de un argumento. Los argumentos se separan por blancos. Además podemos ejecutar mas de un comando en la línea de comandos, separando cada comando con un punto y coma, ejecutándose de izquierda a derecha todos ellos. Ej.: $ comando ; comando2 ; comando3 ; comando4 −abcd En el entorno UNIX cuando llegamos al margen de la pantalla ( columna 80 ), este no salta automáticamente de 41 línea, si no que tendremos que indicárselo manualmente, escribiendo la contrabarra y pulsando ENTER. El S.O, nos dejará terminar la línea de comandos en la siguiente línea, donde aparecerá el prompt secundario representado por el símbolo >, sin empezar a ejecutar ningún comando, hasta que no pulsemos ENTER. Ej.: & comando ; comando2 ; comando3; comando4 ; comando5 ; \ ENTER > comando5 ; comando6 ; ENTER Si el comando que ejecutamos contiene algún error UNIX salta al siguiente y continua con la ejecución de la línea de comandos. Además de eso, si algún comando que ejecutemos tiene parte de comillas, y por algún casual se nos olvidará cerrar las comillas el S.O detectaría el error y nos pasaría al prompt secundario ( > ) para corregir la línea de comandos. La combinación de teclas CONTROL + SUPRIMIR para la ejecución de cualquier proceso o ejecución, devolviendo el control del sistema al prompt. FICHEROS EN UNIX El sistema entiende tres tipos de ficheros: 42 ⋅ Ordinarios: Un fichero ordinario es aquel que contiene datos secuenciales, que puede ser un fichero de texto, de datos, de la shell, o bien un fichero ejecutable. Estos ficheros son normalmente creados por el usuario. ⋅ Directorios: Este tipo de ficheros son entendidos por el sistema como ficheros que contienen información sobre los ficheros que se encuentran a nivel inferior. ⋅ Especiales: Estos ficheros se identifican con los dispositivos físicos que tiene el sistema. Ya que cada dispositivo conectado al sistema debe tener un fichero 43 de identificación, de lo contrario el dispositivo no será detectado. En UNIX, como en todos los S.O, no puede haber dos nombres de ficheros iguales, incluyendo en el nombre del fichero todo el path que abarca el mismo. De modo que no puede haber dos ficheros iguales en un mismo directorio. NORMAS DE NOMBRADO DE FICHEROS La longitud del nombre no es problema pero no puede contener blancos, además los ficheros en UNIX no tienen extensión tal y como la tienen en MSDOS o Windows 9x. Ej.: / empleados.madrid Madrid no sería una extensión si no que formaría parte del nombre del archivo al igual que el punto. A la hora de nombrar ficheros el sistema es Case Sensitive, por tanto dos fichero con el mismo nombre, uno escrito en mayúsculas y otro con minúsculas no sería iguales para el sistema. Ej.: / FICH1 / Fich1 / fich1 44 Son tres ficheros diferentes e independientes. Los nombres de ficheros no deben empezar por caracteres especiales, tales como guión bajo y alguno mas que veremos mas adelante. En ningún caso deben usarse en los nombres de ficheros los siguientes caracteres: ^ , [ ] , * , ( ), < >, ; , & , ¿ ? , ¡ !, \ , # , @ , | Ya que todos estos caracteres tienen un valor especial para el sistema. De cualquier forma, y a pesar de que no deben utilizarse para nombrar archivos, si que podemos hacerlo, ya que hay formas para poder llamar a este tipo de nombres de archivo. Nota: Si creamos un archivo que contenga en su nombre un carácter comodín, no podríamos trabajar con el, ya que sería imposible llamarle correctamente, si no fuese por la contrabarra `\', que poniéndola delante de cualquier carácter especial, convierte a este en un carácter normal. COMANDOS DE UNIX Todos los comandos han de escribirse en minúsculas, ya que el sistema operativo UNIX es case sensitive ( Sensible a mayúsculas y a minúsculas ). ◊ clear: limpia la 45 pantalla ( similar al cls de MSDOS ). ◊ banner <ARGUMENTO> : El argumento lo pone en letras mayúsculas. Acepta más de un argumento, y entran unos 10 caracteres por línea, no es un comando de gran uso, pero el administrador lo usa para advertir al usuario que debe recoger sus documentos en la impresora u otros avisos relevantes. ◊ cal [mes] [año]: Es un calendario del mes actual. Lo puede sacar entre el año 0 y el 9999. Si no le indicamos parámetros, nos dará el calendario del mes actual. ◊ echo <ARGUMENTO>: Visualiza en pantalla el argumento ( Tiene argumentos para tabular, saltar de línea, y otras utilidades a la hora de programar). ◊ date : Saca la fecha y la hora del sistema. La hora y la fecha solo puede ser modificada por el administrador. El administrador configura el formato inicial que posteriormente podrá ser modificado por cualquier usuario o 46 grupo de trabajo. Para modificarlo: Date [+formato] Donde en formato, podremos incluir cadenas de caracteres, cerrando el formato entre comillas. Los códigos de formato pueden ir fuera de las comillas sin causar ningún error. Los códigos de formato son los siguientes: %d: Muestra el día del mes actual. %m: Muestra el mes del año actual. %y: Saca el año en dos dígitos. %D: Saca el formato mm / dd / yy %T: Añade la hora con el formato hh: mm: ss %r: Añade AM/PM a la hora. %j: Saca el número correspondiente al numero de día que ocupa un día dentro de un año, este lógicamente deberá estar entre 1 y 365 o 366 si es bisiesto). %w: Número que ocupa un día dentro de una semana. Siendo el Domingo el 7. %a: Saca los tres primeros caracteres del nombre del día de la semana. %n: Produce un salto de línea. 47 Ej.: Date ` Hoy es: %d / %m / %y ` ◊ ls : Visualiza el contenido de un directorio. ls [opciones] [Argumentos] La información aparece en columnas y ordenada alfabéticamente, pero en ningún caso diferencia entre ficheros y directorios. Trata por defecto de la misma forma los directorios que los ficheros. Este comando, admite varios argumentos, por lo que podemos listar en una misma línea de comando, el contenido de diferentes directorios. Ej.: $ ls /bin /etc Este comando acepta los siguientes argumentos: ⋅ − F: Diferencia entre ficheros y directorios. A los nombres de directorios les añade una barra al final y añade un * al nombre de los ficheros que tienen permiso de ejecución. ⋅ − s: Saca el nombre de los ficheros 48 y directorios y su tamaño en bloques ( Cantidad que el S.O es capaz de leer en un solo golpe del disco duro). Los bloques tienen tamaño de 512 bytes. Por cada archivo reserva como mínimo 2 bloques ( 1 Kbyte) para cada fichero, de este modo puede crecer de tamaño sin problemas. ⋅ − R: Muestra el contenido del directorio y subdirectorio que pueda tener. Ej.: $ ls −R / Mostraría un listado completo de todo el disco duro. Por cada directorio que no pueda leer nos manda un mensaje de error avisando de un permiso de lectura denegado. ⋅ − a: Muestra los ficheros 49 ocultos y para el sistema todo fichero oculto es aquel que empieza por un punto. Además de esto muestra los ficheros normales. El fichero oculto más común es <profile>. Este archivo es un archivo de configuración personalizado para cada usuario, figura en todos los directorios de conexión. No puede ser borrado ya que si este archivo esta ausente, no podremos conectar con el sistema. En este archivo podemos incluir mensajes de bienvenida, programas que queremos ejecutar al iniciar, etc... ya que funciona como un fichero de configuración personalizada que el sistema ejecuta al iniciar la sesión. ⋅−l: Muestra la salida larga de un directorio. Muestra la máxima información que el sistema puede ofrecernos acerca de un archivo o directorio. − rw_r__r__ 1 1 tbx primero 50 1360 12:27 12/12 Hola En la primera columna figura si el archivo es un archivo o un directorio, si es un archivo figurará un guion y si es un directorio figurará una d. En la segunda columna figuran los permisos, que se agrupan de tres en tres. Los tres primeros indican los permisos para el propietario, los tres siguientes indican los permisos para el Grupo y los tres siguiente para el resto. La tercera columna indica el numero de enlaces que tiene el archivo. Todo fichero tiene como mínimo un enlace al propio fichero y un directorio tiene como mínimo dos enlaces, un a si mismo y otro al directorio padre. A continuación aparece el propietario del fichero y posteriormente el grupo del fichero. Después el tamaño en bytes del fichero. En la siguiente columna hora y fecha de la última modificación. Si hay un fichero que ha pasado un año desde su creación, el numero del año figurará en el fecha. Por último figura el nombre del fichero o directorio. ◊ ln: Permite enlazar ficheros y directorios. ( Enlazar es parecido a crear un acceso directo al fichero o directorio enlace en 51 otro directorio que es el enlazado). Ej.: ln [opciones] Argumento1 Argumento2 Ej.: ln fich1 fich2 Un fichero enlazado no tiene por que llamarse igual que el fichero de enlace. La propiedad y los permisos del fichero enlace se conservan en el fichero enlazado. Para enlazar un fichero habría que tener permiso de lectura / escritura ( + r + w). Para enlazar un directorio se utiliza el parámetro −s. Ej.: ln −s dire1 dire2 Cuando hacemos un ls −l los nombres de los directorios aparecen con una l delante y después el directorio enlazado y el enlace. ◊ mail : Comando de correo electrónico. Sirve para la comunicación con los usuarios dentro del sistema. También podemos dejarnos un mail para nosotros a modo de recordatorio, ya que al iniciar la conexión nos advertirá de que tenemos correo. Todo usuario tiene un buzón que se encuentra en el directorio en el que se 52 encontrará un archivo en /var/mail/nombre_usuario. Para recibir correo deberemos tener un mensaje como mínimo, después bastará con ejecutar la orden ` mail `, apareciendo como primer mensaje el mensaje mas nuevo. En la cabecera nos dará los detalles y desde donde se ha enviado el mail, y posteriormente a la cabecera se encuentra el cuerpo del e−mail. Después del cuerpo del mensaje podremos utilizar comandos relacionados con el mail: ENTER: Visualiza el siguiente mensaje. d : Borra el mensaje que acabamos de visualizar. − : Visualiza el mensaje anterior, siempre que este exista. P : Repite el mensaje que acabamos de visualizar. S [fichero] : Guarda el mensaje en un fichero y además lo borra del buzón de correo. Cuando el cuerpo del mensaje contiene símbolos desconocidos, el cuerpo del mensaje no aparecerá, y nos mostrará el error correspondiente. Para visualizar el texto del mensaje, deberemos utilizar este comando para mandar el cuerpo del mensaje a un 53 archivo, donde podremos leerlo correctamente. Cuando utilizamos esta técnica, no machacamos el archivo de direccionamiento, si no que se efectúa una concatenación. w [ fichero ]: Igual que la anterior, pero este no graba la cabecera del correo en el archivo destino. q : Abandona el servicio de correo. Con este comando podemos salir cuando lo deseemos sin necesidad de terminar de leer todos los mensajes. * : Muestra todos los opciones o argumentos del programa mail. Ejemplo: $ mail − p : Saca el mail completo, todos los mensajes recibidos, uno detrás del otro, sin paginación por defecto, sería como visualizar el contenido del fichero. / var / mail / nombre_usuario Para enviar un mail solo tenemos que poner la orden y el usuario al que queramos enviar el mensaje. A partir de aquí escribiremos el mensaje. Si queremos salir sin enviar el mensaje CONTROL + SUPR . Para finalizar y enviar ponemos un punto en la 54 siguiente línea y pulsamos ENTER. O en vez del punto también podemos usar CONTROL + D. No se puede borrar el contenido de una línea que hemos dejado atrás escribiendo. Deberemos borrar el mensaje y escribirlo de nuevo con CONTROL + SUPR. ◊ passwd : Permite cambiar la contraseña del usuario en cuestión. Cada usuario solo puede cambiar la suya propia y en ninguna caso la de cualquier otro usuario. El administrador aunque no sabe las contraseñas de los usuarios, si que puede cambiarlas. Como una medida de seguridad, el sistema pedirá una nueva contraseña cuando esta cumpla un tiempo de caducidad, en ese momento habrá que renovarla por otra que sea al menos un 50 % diferente. Para cambiar la contraseña deberemos indicar primero la antigua y posteriormente la nueva, pidiendo después una confirmación de la misma. ◊ sleep tiempo : Produce un retardo de tiempo en segundos. Ej.: Echo Mensaje; sleep 5 55 Este comando sacaría un mensaje en pantalla y esperaría 5 segundos. El tiempo se establece en segundos, el tiempo puede ir entre 1 segundo y 65636 segundos. La única forma de romper esta espera es con las siguientes combinaciones de teclas: CONTROL + D CONTROL + SUPR ◊ who : Muestra información sobre los usuarios que están conectados al sistema con el siguiente formato. Las opciones de este comando son las siguientes: ⋅ u : Añade a la información un punto y una cifra numérica, donde el punto índica el tiempo de inactividad del terminal: 56 ♦ Inact en el últim minu Sino hemo hech nada en el últim minu en lugar del punt apare en panta el tiem de inact ♦ La cifra es num del proc asign a la shell Cuan entra al siste a nues intér de coma se le asign un núm que sirve como matr 57 ⋅ T: Además de lo anterior saca un + o un − . Estos símbolos indican el estado del terminal, si esta abierto muestra el símbolo + permitiendo el tráfico interactivo de mensajes. De lo contrario muestra el −. ◊ cat : Equivalente al type de MSDOS, visualiza el contenido de uno o varios ficheros dependiendo de los argumentos que pongamos en su llamada. Ej.: $ cat fich1 /etc/fich2 fich3 Visualizaría el contenido del fichero uno después el del fichero dos y posteriormente el del fichero tres, sin distinguir entre el contenido de un fichero y el contenido del otro. Por tanto no usa paginación a la hora de mostrar la información. Al igual que en MSDOS podemos usar redireccionamiento de salida hacia cualquier nombre de 58 a todas las ejecu que prod fichero, lo que nos permite la edición o copia de un fichero. También nos permite la edición de un fichero, ya que si ejecutamos cat y un redireccionamiento hacia un fichero, nos pasara al segundo prompt para poder escribir tantas líneas como deseamos, para terminar de escribir pulsaremos CONTROL + D. Todas las líneas que hayamos escrito quedarán guardadas en el archivo de direccionamiento. Ej.: $ cat > fichero texto 1 texto 2 texto 3 CONTROL + D Si solo ponemos un redireccionamiento el contenido del fichero destino será sobrescrito, si ponemos dos símbolos de redireccionamiento, la nueva información se concatena en el archivo destino. Este comando solo entiende caracteres ASCII. ◊ cp: Copia uno o varios ficheros a un destino que debe ser obligatoriamente un directorio, y además será indicado como último argumento. 59 Ej.: $ cp Argumento1 Argumento2 Directorio_Destino Si indicamos varios argumentos y un destino, todos los archivos serán copiados a un único directorio destino, ya que solo puede indicarse un destino por llamada al comando. Ej.: $ cp fich1 fich2 fich3 Destino Copiaría los ficheros fich1, fich2, y fich3 al directorio Destino. ◊ mv: Mueve los ficheros o directorios. Ej.: $ mv / dir ◊ rm: Borra únicamente ficheros, si un usuario no pone los permisos correspondientes, el sistema no pide confirmación. Cuando borramos un fichero, esto no puede ser recuperado. Evidentemente no podremos borrar un archivo del que no dispongamos de permiso de lectura − escritura. Admite más de un argumento y solo puede borrar ficheros. Ej.: $ rm /fich1 ◊ mkdir: Comando 60 que sirve para crear uno o varios directorios. Para ello usaremos el siguiente formato: Ej.: $ mkdir dire1 dire2 dire1/dire11 Tiene una opción que es la −p , y que permite crear rutas completas de un solo golpe. Ej.: $ mkdir −p dire1/dire11 Estamos creando de un golpe dire1 y dentro de dire1 dire11. ◊ rmdir: Este comando elimina directorios. Para que esto sea posible el directorio deberá estar vacío y no podremos estar posicionados dentro del mismo. Al igual que mkdir, también tiene la opción −p para borrar rutas completas. Ej.: $ rmdir −p dire1/dire11 Borra tanto dire1 como dire11. También podemos combinar con la −p la −s que hace que el sistema muestre en pantalla las acciones que esta ejecutando. Si queremos borrar el directorio y todo el contenido del mismo, deberemos usar la opción −r. Ej.: $ rmdir −r /dir1 61 ◊ cd: Comando que nos sirve para posicionarnos en un directorio determinado. Sus argumentos son los siguientes: cd .. : Con blanco entre el cd y los dos puntos, nos posiciona en un nivel de directorio inferior. cd / : Nos posiciona en el directorio raíz del disco duro. cd /etc : Nos posiciona en la ruta indicada. cd : Nos muestra el directorio de conexión. ◊ pwd: Nos muestra la ruta actual, el path completo. CARACTERES COMODINES EN UNIX * : Suple por cualquier cadena desde donde ha sido escrito. Ej.: $ ls / f*e Muestra los ficheros que empiezan por f y terminan por e. $ ls / *.* Muestra todos los ficheros que tengan un punto en la cadena. ? : Suple un carácter en la posición en la que se encuentra la interrogación. Ej.: $ cat f ? 62 Mostraría el contenido de todos los archivos que comiencen por f, y consten de dos letras. (f1, ff, fe, fg, etc..). [ ] : Sustituyen por un solo carácter en la posición donde se encuentra, admitiendo rangos. Ej.: $ cat f [1234] Mostraría el contenido de los ficheros: f1, f2 , f3, f4 Podemos usar el guión para establecer el rango: $ cat [a−j] Incluso, podríamos incluir una coma para ejecutar varios argumentos: $ cat f[a−j , x−z] Mostraría todos los ficheros, cuya posición de carácter coincida con los rangos especificados en la línea de argumentos. También podemos hacer que este comando muestre los archivos cuyo rango de caracteres no se cumpla. Esto lo haremos mediante el cierre de exclamación. Ej.: $ cat [ !Rango] REDIRECCIONAMIENTOS DE COMANDOS Un redireccionamiente sirve para modificar la salida o entrada estándar de un comando determinado. Al igual que en el entorno no 63 gráfico de Windows 95, para los redireccionamientos usaremos el los símbolos mayor o menor, dependiendo de si lo que queremos cambiar es la entrada o la salida estándar del comando. Todo redireccionamiento une un comando con un fichero determinado. • Redireccion de Entrada: < $ mail 1mbx < fich1 Con este comando le mandamos el contenido de un fichero al usuario 1mbx. • Redireccion de Salida: > $ cat fich1 /etc/x > fich_destino Guarda el contenido de los ficheros fich1 y x en el fichero fich_destino. Si no usamos un redireccionamiento de salida doble, el contenido del fichero destino será machacado. • Redireccion Doble de Salida: >> $ cat fich1 >> fich_destino Este tipo de redireccionamiento no machaca el contenido del fichero destino. • Redireccion 64 de Error: 2> $ cat fich /etc/x 2> fich1 Todos los errores que se produzcan ejecutando la línea de comandos, no saldrán por la salida estándar, si no que se guardarán en el fichero destino, machacando el contenido del mismo, si este ya existía. • Redireccion Doble de Error: 2>> Es exactamente igual que el anterior, sin embargo no machaca el contenido del archivo destino, si no que si este existe, concatena la información. TRANSFERENCIAS Un transferencia sirve para utilizar la salida de un comando, como la entrada de otro. Esto lo hacemos mediante los tubos, que se sacan con la combinación de teclas ALT + 1. Ej.: $ Comando1 | Comando2 Podemos hacer un cat de un fichero y entubarlo a un mail de un usuario. De este modo le estaremos enviando un archivo vía correo electrónico. Ej.: $ cat fich1 | mail 1mbx 65 $ banner hola | write 1mbx Existe un comando llamado more, que se encarga de hacer una paginación de cualquier comando que use la salida estándar. El modo de uso de este comando es el siguiente: $ ls −lR | more Muestra un dir completo del disco duro paginado. OTROS COMANDOS ÚTILES ◊ grep [Opciones] patrón Argumento1 Este comando busca en los ficheros especificados como argumentos las líneas que coinciden con el patrón indicado y las muestra en pantalla. Es capaz de localizar tanto cadenas como subcadenas. Este comando es sensible a mayúsculas y minúsculas. Ej.: $ grep 1ma /etc/x Este comando muestra las líneas del archivo x que contengan la cadena alfanumérica 1ma. Si especificamos una cadena con blancos deberemos encerrarla entre comillas. Acepta las siguientes opciones: ⋅v: Visualiza las líneas que no contienen la cadena. ⋅n: 66 Visualiza las líneas que contienen la cadena y el numero de la línea en la que esta posicionada dentro del fichero. ⋅c: Devuelve el número de líneas que contienen la cadena patrón. ⋅ i : No diferencia entre mayúsculas y minúsculas. ⋅ l : Se utiliza cuando se ponen comodines dentro de los argumentos. Aunque no hace falta, es conveniente poner siempre las comillas al patrón. Este comando acepta todos los comodines de búsqueda, además de los siguientes: ⋅ . : El punto es equivalente a la ?. Sustituye en su posición por cualquier carácter. ⋅ [ ]: Sustituye por el rango en la 67 situación donde se encuentra. Ej.: 1ma [a−z] ⋅ ^ : Es equivalente a la ! ya que niega una determinada condición. Ej.: 1ma[^a−z] El comodín * también puede ser utilizado aunque no tiene mucho sentido ya que grep por defecto hace búsqueda de subcadenas. Para buscar una carácter especial, como siempre, deberemos precederlo de la contra barra \. Si precedemos de un símbolo de dólar $ a la cadena patrón, grep mostrará en pantalla las líneas que terminen por esa cadena o subcadena. Por lo contrario si la cadena patrón es precedida por el símbolo circunflejo ^ , grep mostrará en pantalla aquellas líneas que comiencen por esa cadena o subcadena. ◊ fgrep [opciones] Argumento1 ... Es igual que el comando grep, pero con la diferencia que este no admite comodines, y convierte a estos en valores literales de la cadena. Las opciones de este comando son las siguientes: ⋅ f : Esta opción indica a 68 grep que busque las cadenas contenidas en un determinado fichero, correspondiendo cada línea a una cadena determinada. Ej.: $fgrep −f fichero_con_cadenas fichero_de_busqueda Este comando tiene una opción para buscar varias cadenas, una por una, y que nos vaya mostrando las líneas que tienen el patrón por pantalla. Esta opción se realiza de la siguiente manera: ♦ Tecleamos $fgrep Cadena1 ♦ Al dejar las comillas abiertas indicamos al comando que no hemos terminado de escribir los argumentos, por lo que nos aparecerá el prompt secundario. ♦ En el prompt secundario escribiremos las cadenas que queramos separadas por ENTER, cerrando las comillas cuando deseemos terminar. Ej.: $fgrep Cadena1 ENTER > Cadena2 ENTER > Cadena3 ENTER > Cadena4 ◊ egrep Cadena1 | Cadena2 | Cadena3 69 Este comando hace lo mismo que los anteriores, pero permite especificar varias cadenas en una sola línea de comandos. Cada cadena muestra unos resultados diferentes. Estos tres comandos pueden ser entubados como entrada de cualquier otro comando UNIX. Ej.: $ ls − l | grep ^d Este ejemplo hace un listado de los ficheros y directorios del path actual y lo entuba como entrada al comando grep, que depura los resultados y muestra las líneas que comienzan por d que en este caso coincide con los directorios. ◊ chmod permisos_Propietario Pemisos_Grupo Pemisos_Resto Argumentos.. Este comando permite modificar los permisos existentes en ficheros y directorios. Este comando puede ser utilizado de dos formas diferentes: La diferencia entre asignar permisos y poner o quitar permisos es que mediante una asignación deberemos establecer los valores de todos los permisos. 70 Mientras para añadir o quitar un permiso podremos hacer referencia directa a ese permiso dejando el valor de los demás permisos como estaban. Notación Octal: De esta forma le indicamos los permisos mediante tres dígitos representados en forma octal, y que por tanto, cada dígito representa tres estados binarios, esto es debido a que a cada numero octal le corresponde un número binario compuesto por tres dígitos. La tabla octal es la siguiente: rwx 0−> 0 0 0 Quita todos los permisos 1−> 0 0 1 Solo permiso de ejecución. 2−> 0 1 0 Solo permiso de escritura, 3−> 0 1 1 Permisos de escritura y ejecución 4−> 1 0 0 Solo permiso de Lectura 5−> 1 0 1 Permisos de Lectura y ejecución 6−> 1 1 0 Pemisos de Lectura y Escritura 7 −>1 1 1 Asigna todos los permisos Cuando un permiso tiene valor 1 asignamos el permiso, si este tiene valor 0 damos ausencia de permiso. 71 Para asignar los permisos en notación octal lo haremos de la siguiente forma: $ chmod 735 fich fich2 Este comando lo que hace es dar todos los permisos al propietario ( 1 1 1), permisos de escritura y ejecución al grupo (0 1 1)y permisos de lectura y ejecución al resto. Estos permisos son asignados a los archivos fich y fich2. Si queremos cambiar los permisos de un directorio deberemos estar en su directorio inmediato o directorio padre. Notación Simbólica: Para hacerlo en notación simbólica: $chmod Quien Que Permiso Argumentos.... Quien puede ser: ⋅ u : el propietario del archivo o directorio. ⋅ g : el grupo. ⋅ o : el resto de usuarios. ⋅ a : si queremos referirnos a todos. Que puede ser: ⋅ + : Para añadir permiso. ⋅ − : Para quitar un permiso. ⋅ = : Para 72 asignar permisos. Los permisos pueden ser: ⋅ r : Permiso de Lectura ⋅ w : Permiso de Escritura ⋅ x : Permiso de Ejecución Ejemplo de un cambio de permisos en forma simbólica: $chmod u + rxw , g = wx , o = rx fich En el ejemplo anterior se puede distinguir poner registros al propietario del grupo, o asignar permisos al grupo y al resto. Cuando utilizamos el operador de asignación =, considera que los permisos a los que no se ha hecho referencia deben estar ausentes. ◊ wc [opciones] Argumento ... Este comando es capaz de contar las líneas, palabras o caracteres de cualquier fichero o ficheros. Por defecto si ejecutamos el siguiente comando: $wc fichero Obtendremos en pantalla: 17 líneas 50 palabras 800 caracteres fichero Por cada fichero que pongamos en argumentos nos devolverá una línea independiente de información. Las opciones de este comando, todas en 73 minúsculas, son las siguientes: ⋅ l : Solo cuenta el numero de líneas ( Para distinguir una línea de otra se fija en el carácter ENTER). ⋅ w : Solo cuenta el numero de palabras, que estén separadas entre enter, espacios o tabulaciones. ⋅ c : Cuenta los caracteres. En unix todo se cuenta como un carácter, de modo que los blancos, enter y tabulaciones serán contados como caracteres. Este comando es aun más util se lo entubamos a otro comando. Por ejemplo para saber los usuarios que hay conectados al sistema: $who | wc −l ◊ more [opciones] Argumento... Este comando ya ha sido explicado por encima anteriormente, ahora veremos todas las 74 posibilidades que nos ofrece. Cuando pulsamos ENTER en mitad de una paginación salta línea a línea. Si pulsamos SPACE salta directamente a la siguiente página. Las opciones de este comando son las siguientes: ⋅ Nº entero: Esta opción permite visualizar un número de líneas determinado. Ej.: $ more −10 fichero ⋅ c : Limpia la pantalla antes de comenzar cada paginación. ⋅ + Nº Entero: Mediante esta opción indicamos a more la línea del archivo por donde deseamos que empiece a leer. Ej.: $more −10c +25 fichero Este comando visualiza de 10 líneas en 10 líneas borrando pantallas y visualiza a partir de la línea 25 del fichero que le hemos indicado. ◊ pg [opciones] 75 Argumento.... Complemento de more. Hace lo mismo, paginar la información. Pero además este dispone de un prompt interno, donde pagina cualquier información en pantalla, esto nos permite recorrer el fichero hacia delante o hacia atrás. Para salirnos del prompt solo deberemos teclar q ◊ head [opciones] Argumento ... Muestra la primera parte de un fichero, por defecto muestra las 10 primeras líneas, aunque mediante las opciones podemos cambiar este parámetro. Las opciones son las siguientes: ⋅ Nº Entero: Numero de líneas que queremos visualizar de la cabecera del archivo. ◊ tail [opciones] Argumento ... Visualiza el final del fichero. Por defecto sacas las 10 últimas lineas. Tiene las siguientes opciones: ⋅ Nº Entero: Numero de líneas que queremos visualizar ⋅ + Nº Entero: Permite sacar desde la línea indicada hasta el final del 76 fichero. ⋅ l : Es la opción por defecto. Visualiza el numero de líneas establecidas. ⋅ c : Visualiza los caracteres. ⋅b: Visualiza en bloques (512 bytes) ◊ tee [opciones] Redirecciona la salida de un comando a un fichero a la vez que saca los datos por pantalla ( Salida estándar ). Ej.: $ grep pepe fichero | tee lineas.pepe Saca por pantallas las líneas del archivo fichero que contienen la cadena pepe y además las almacena en el fichero líneas.pepe. Este comando por defecto machaca el contenido del archivo de destino. Sin embargo esta opción puede ser modificada mediante las opciones. Estas son las opciones para este comando: ⋅ a : Para que el comando no machaque el contenido del archivo destino y concatene la información deberemos indicar esta 77 opción en la llamada al comando. Ej.: $grep pepe fichero | tee lineas.pepe | grep luis Visualiza las líneas que contienen Pepe y Luis y solo guarda las líneas que contengan la cadena pepe. ◊ comm [opciones] Argumento1... Argumento2... Permite localizar partes comunes dentro de dos ficheros, básicamente, compara dos ficheros línea a línea. Visualiza las diferencias tabuladas. Líneas que pertenecen al primer fichero y que son diferentes a las del segundo. Líneas que pertenecen al segundo fichero y que son diferentes a las del primero. Líneas comunes a ambos ficheros Las opciones para este comando son las siguientes: ⋅1: Visualiza las líneas exclusivas del fichero2 y las comunes de ambos ficheros. ⋅ 2: Visualiza las líneas comunes entre ambos ficheros. ⋅ 3: Visualiza 78 las líneas exclusivas del archivo 1 y las líneas comunes. Otros comandos relacionados: diff y cmp . diff compara líneas y cmp compara por caracteres y devuelve la información de cual es el primer carácter diferente. Informa de la posición del primer carácter diferente. ◊ cut [opciones] Argumentos: Este comando sirve para visualizar por columnas o campos, recorta líneas de un fichero por columnas o campos. Tiene como salida estándar la pantalla y no modifica el contenido del fichero origen. Podemos cortar columnas o campos, dependiendo de nuestro interés. Estos son las opciones que acepta: ⋅ c : Corta columnas. Ej.: $cut −c10 archivo Muestra el carácter diez de todas las lineas que componen el archivo. Podemos indicar más de una posición de la siguiente forma: $cut −c10,11,12 fichero Esto mostraría los caracteres 10,11 y 12 de cada línea del fichero. También podemos indicar un rango: $cut −c10−12 fichero 79 Mostraría todos los caracteres comprendidos entre el 10 y el 12 de cada lineas, ambos incluidos. Si queremos indicar desde un número hasta el final: $cut −c10− fichero Mostraría todos los caracteres a partir del 10 y hasta que termine la línea de cada línea del archivo en cuestión. ⋅ f : Esta opción corta campos situados en línea de un fichero, para ello deberemos indicarle el separador de campos que se ha utilizado para crear la estructura del archivo. Ej.: $cut −d: −f2 empleados De esta manera le indicamos que el separador son los dos puntos. Si el separador es un carácter especial, el separador deberá ir entre comillas. El ejemplo anterior cortaría el campo numero dos de cada línea del fichero empleados y lo mostraría en pantalla. Si queremos utilizar el blanco como separador, deberemos indicarlo entre comillas, ej.: $cut −d −f2 empleados 80 De la misma forma que para cortar columnas, para cortar campos se pueden indicar un solo campo, varios, un rango o desde un campo hasta el final. ◊ paste [opciones] Argumentos: Este comando pega lineas de varios ficheros formando una sola línea. Su salida estándar es la pantalla. Ej.: Por defecto separa las columnas por una tabulación. Ejemplo de su forma de uso: $paste A B Sacaría por pantalla el resultante del grafico anterior. Si en vez de un tabulador como separador, queremos utilizar uno propio, deberemos indicárselo con −d. Ej.: $paste −d: A B Este comando generaría el siguiente resultante: Podemos indicar varias fuentes, y de todas ellas al final generará un solo resultante. Ej.: 81 $paste A B C D Si queremos indicar un separador para cada campo, deberemos indicar tantos separadores como se vayan a utilizar después del −d. Ej.: $paste −d:$% A B C D Este comando usaría los dos puntos para separar los campos A y B, usaría el dólar para separar los campos B y C, y el porcentaje para separar el campo C del D. Ej.: A:B$C%D Este sería otro ejemplo: $cut −f2 −d: empleados | paste −d: − sueldos > fichero Este comando juntaría en una sola línea, el campo numero dos de cada línea del archivo empleados, y las lineas del fichero sueldos, separando ambas por dos puntos. El guión que hay después del −d sirve como variable, e indica donde ira posicionada la información que procede de la transferencia ( Entubado ). ESTRUCTURA DEL FICHERO <PASSWD> Este fichero es de contraseñas, esta escrito en código ASCII, y puede ser visualizado mediante un cat. Se encuentra en el directorio de ficheros del sistema y configuración del mismo ( / etc / passwd ) y tiene una línea por cada usuario que 82 este dado de alta en el sistema. En el se encuentra información separada en campos por el símbolo dos puntos. Ej.: ( Siguiente Página ) FORMATO DEL FICHERO <Group> Este fichero contiene los grupos existentes en el sistema, esta escrito en código ASCII, y se encuentra en el directorio de archivo y configuración del sistema (/ etc / Group). Tiene una línea por cada grupo existente. Ej.: ◊ Umask: (el sistema establece una máscara o código para la creación de ficheros). 83 Establece una máscara para la asignación de permisos a la hora de crear un fichero. La máscara es un número de tres dígitos, donde el primero es para el usuario, el segundo para el grupo y el tercero para el resto. Los números oscilan entre el 0 y el 7, y la máscara por defecto es 022. Cuando se crea un directorio tendrá como máximo la máscara 777, y como la máscara por defecto es 022: ◊ Para el usuario se mantienen, por el 0, los permisos R, W, X. ◊ Para el grupo se quita el permiso dos, el de W. ◊ Para el resto se quita también el permiso de escritura. A la hora de crear un fichero, como máximo se puede crear con permisos de Lectura y escritura. Sigue el mismo funcionamiento que el de los directorios, pero con la máscara 666. ◊ Find: busca en la estructura de árbol ficheros o directorios que cumplan algún criterio. Una vez localizado permite realizar una acción sobre ellos. Se divide en: ♦ DIRECTORIO INICIAL DE BÚSQUEDA. ♦ CRITERIO DE BÚSQUEDA. ♦ ACCIÓN. 84 DIRECTORIO INICIAL DE BÚSQUEDA. Es aquel en el que se va a empezar la búsqueda, que las hace por ramas. Desde el primer fichero al último, hacia abajo. Siempre hay que ponerle un punto de partida. Por ejemplo: para buscar desde el directorio actual: con el . (punto). Con : (dos puntos) desde el directorio padre. CRITERIO DE BÚSQUEDA Son las características que cumplirán los ficheros o directorios. Existen: − Name fichero: busca ficheros que coincidan con el nombre que va entre comillas. ♦ −size + ó − número: busca ficheros que tengan un determinado número de bloques. ♦ −size + ó − número [c]: Por ejemplo −size +3c Indica que buscamos caracteres en vez de bloques. ♦ −atime + ó − número: selecciona ficheros o directorios a los que se ha accedido hace un número de días. ♦ −mtime + ó − número: igual que atime, pero para ficheros que se han modificado. ♦ −type tipo−fichero: indica que tipo de fichero se está seleccionando. Con F indicamos ficheros y con D directorios. 85 ♦ −user login: busca ficheros o directorios de un determinado usuario. ♦ −group grupo: busca ficheros o directorios de un determinado grupo. ♦ −perm nº nº nº : busca ficheros que tengan los permisos indicados en octal. ♦ −links + ó − nº: busca ficheros que tengan un determinado número de enlaces. Se puede poner más de un criterio, por ejemplo: find . −size +3 −user pepe El operador que une a dos o más criterios es el AND, como es por defecto no hace falta ponerlo, pero si se quiere poner se prepresenta por −a. Si queremos poner un OR, ponemos −o, si ponemos una ! significa un NOT. Para dar prioridad a un criterio se pone entre paréntesis: Find . \(−size +3 −o −user pepe\) −type f La barra \ se pone siempre delante de un símbolo especial, para borrar el valor especial que posee. ACCIONES. Hay una acción por defecto que es −print que visualiza la ruta de los ficheros o directorios que cumplen los criterios. ⋅ exec comando: ejecuta el 86 comando cada vez que encuentra el fichero o directorio que cumpla los criterios. Por ejemplo: find . −size −10c −exec rm {} \; Las llaves hacen referencia a los criterios nombrados, y el punto y coma (;) es para separar los ficheros cuando los visualice. ⋅ ok comando: hace lo mismo que el exec, con la diferencia de que pide confirmación de ejecución del comando. ◊ id: Muestra el identificador del usuario y el grupo al que pertenece. Ej.: $id SALIDA: uid = 1mbx (503) gid = primero (103) ◊ logname: Devuelve el nombre del usuario que esta en el terminal. Ej.: $logname SALIDA: 1mb2 ◊ sort: Muestra por pantalla las lineas de un fichero de forma ordenada. Ej.: $sort [opciones] Argumento... Podemos ordenar por un 87 campo determinado indicándole el separador de campos mediante la opción −t y el separador. Ej.: $sort −t: +2 empleados Mediante esta orden, sacaríamos por pantalla las lineas del fichero empleados, ordenadas por el campo numero 3 del fichero, esto se debe a que SORT EMPIEZA A CONTAR DESDE EL CAMPO 0. También podemos ordenar por más de un campo: $sort −t: +2 +3 empleados Indicamos los campos con un + delante y el numero del campo por el que queremos ordenar, en este caso al ser dos, dejamos un espacio obligatorio entre ambos campos. Si queremos ordenar por un campo numérico, por ejemplo por los sueldos de los empleados, lo indicaremos con +n cuando indiquemos el número del campo por el que queremos ordenar. Ej.: $sort −t: +3n empleados Este comando ordenaría los empleados por el sueldo. Otras opciones del comando sort: −r : Invierte la ordenación, dando preferencia desde la `z' a la `a'. −o: Guarda la ordenación en un fichero. Ej.: 88 $sort −t: +3 −o fichero argumento −m: Solo se utilizará cuando le indiquemos más de un argumento (Mas de un fichero). Y lo haremos para indicar que todos los archivos que indicamos están ya ordenados. Ej.: $sort −t: +2n −m empleados1 empleados2 −u : No pone lineas duplicadas. Si hubiese dos registros iguales coge uno de ellos al azar. Normalmente se utiliza cuando se indica más de un fichero en la línea de comandos. ◊ split [opciones] Argumento [Nuevo_Nombre].... Divide un fichero en ficheros más pequeños. Esto se debe a que un fichero en UNIX puede ocupar un espacio sin límite, hasta agotar el espacio libre del disco duro. Por defecto divide al archivo original en archivos de 1.000 lineas. Con la opción −Nº le indicamos el número de lineas en que tiene que agrupar el archivo. Ej.: $split −10 empleados Genera tantos ficheros como lineas pueda dividir. Los archivos que genera, tienen la siguiente nomenclatura: Xaa Xab 89 Xac ... Podemos cambiar esta nomenclatura estandar por la que queramos de la siguiente forma: $split −10 empleados pepe pepea pepeb pepec ... −b : Esta opción divide por bloques al argumento, por defecto divide de 2 bloques en 2 bloques. Pero podemos indicarle el número de bloque por los que queremos dividir al archivo. Ej.: $split −10b empleados nueva_serie ◊ chown nuevo.propietario Argumento... Permite cambiar la propiedad un fichero. Solo podemos cambiar la propiedad a nuestros archivos. En el instante que damos la propiedad a otro usuario perderemos la propiedad del mismo. Si la propiedad se la damos a alguien del grupo heredaremos los permisos del grupo. ◊ chgrp nuevo.grupo Argumento... Para cambiar de grupo a los ficheros. Si cambiamos el 90 grupo, el usuario no pierde la propiedad. 91