Unix

Sistemas operativos. Linux. Entrada. Cadenas regulares

  • Enviado por: Kober
  • Idioma: castellano
  • País: España España
  • 14 páginas
publicidad
publicidad

Inicialmente tendremos que saber si estamos en la versión de System V o Beckerley. Linux soporta las dos.

Diferencia entre linux y uníx:

  • Uníx sirve para todos

  • Linux solo para pcs y es un sistema operativo freeware

  • Desde el punto de vista economico, linux es mejor, pero en cuestion de garantía y de servicio al cliente, es mejor uníx.

  • Linux tiene un firewall.

  • En sitios no críticos es mejor tener linux (conexión a inet, etc).

ENTRADA A UNÍX

  • La primera información es el login y el password

  • Minimo 6 caracteres de password. Para hacer todo el chequeo de combinaciones de password, haría falta por cada letra, 28 veces. Uséase: 28 * 28 * 28 * 28

  • Unís itiene un sistema de aleatorización de claves. El mismo genera las passwords aleatoriamente.

Normalmente la password contiene numeros y letras.

  • El fichero motd tiene la configuración inicial (El mensaje de bienvenida).

  • El administrador debe conocer en todo momento la máquina, etc que viene en motd

  • A partir de ahí, lo primero que hace el sistema es mirar si hay correo.

  • Para mirar el correo, se teclea la instrucción mail

  • Siempre hay un correo de bienvenida, por cortesía.

  • Una vez visto el correo, hay que mirar el terminal del que disponemos. Hay distintas :

    • ANSI

    • VT100 (Standard definido a nivel internacional que permite el reconocimiento de caracteres entre el pc y el servidor)

  • Lo que antes era la barra vuelta, ahora es la barra normal (la de encima del siete)

  • El . y el .. significan lo mismo que en MSDOS

  • Los comandos siempre en minúsculas

  • El sistema distingue entre may y minúsculas.

  • Los comandos con los que trabajemos tambien tienen parámetros. Normalmente, los parámetros llevan delante el símbolo ` - `

  • Para conocer la ayuda, se pone en el prompt del sistema:

    • man pwd

  • la conexión que se realiza, hace que el date tenga la hora del servidor

CADENAS REGULARES

Si ponemos un punto, se puede sustituir por una sola letra.

CHIL. CHILE, CHILI, CHILO

Si ponemos un *, va a ser sustituido por 0 o màs repeticiones del caracter que lo precede

AP*LE ALE, APLE, APPLE, APPPLE

Si ponemos un corchete, la expresion podrá contener los caracteres que estén indicado dentro del corchete una sola vez.

[Cc] hicken Chicken, chicken

es possible indicar un rango de caracteres entre los corchetes, que serán las que se busquen dentro de la cadena regular

sustituiremos dentro de la expression regular cualquier letra que esté contenida en ese rango

[a-z A-z] hicken ahicken, bhicken, chicken, dhicken ….

Ahicken, Bhicken, Chicken, Dhicken ….

Si queremos indicar que queremos hacer una busqueda al comienzo de una linea irá precedida por ^.

^Buf busca dentro de todas las lineas solo las 4 primeras letras en que coincida con las letras Buf

Si la hacemos al final, se coloca como ultimo caracter un $

Sonp$ al final de cada linea las letras sonp en las últimas 4 posiciones

Las expresiones regulares se usan normalmente con greep.

$ grep `chicken' receta.txt todas las lineas del fichero en las que aparezca chicken

$ grep `chicken' * En cualquiera de los ficheros del subdirectorio actual

$ grep `eh.*se' recetas.txt con el punto cualquier caracter unico, con el * 0 o n repeticiones todo lo que empieze por ch y acabe por se.

$ grep `^\.D[SE]$' fichero.txt cualquier cosa que sea .D o .dse al comienzo o al final.

$ file * | grep -v text eliminariamos todos los ficheros que no fueran de texto

$ grep -l `hola' * buscar en todoss los ficherso del subdirectorio, los que contentga la palabra hola y muestra el nombre del fichero donde aparezca.

EGREP

Expresiones regulares de forma extendida.

Los parametros son iguales que el grep, pero los reconoce de manera más exacata y precisa.

FGREP

No es posible usar expresiones regulares, siempre hay que usar expresiones fijas

Permite realizar operaciones de búsqueda múltiple. Permite expresar varias palabras al mismo tiempo, cosa que con lo de antes es imposible

/ Fgrep primerapalabra+intro

Se pone el prompt secundario

  • palabra2

  • palabra3

Para acabar se pone el nombre del fichero a buscar y luego Ctrl + D

  • fichero

  • Ctrl + D

Se puede indicar introduciendo las palabras a buscar en un fichero (en distintas lineas)

/ fgrep -f palabras.dat ficherobusqueda

Hacer los ejercicios del grep (incluyen expresiones regulares con corchete) con egrep

Sobre el listado del subdirectorio /usr localice los subdirectorios de los miembros de cada grupo.

Nombres.dat nombres de login

CUT

Permite recortar las columnas o caracteres delimitadas por algun carácter de marca de columnas.

La sintaxis es:

$ cut [-opc] file/s

las opciones son:

  • -c indicamos que lo que se desea es cortar exclusivamente columnas que en principio estarán separadas por comas.

  • -f indicamos que lo que se desea recortar son campos, por lo tanto, el fichero deberá estar formateado con respecto a informaciones que se estructuren en el formato de registro subdividido en campos. Un ejemplo:

    • ofertas

    • especialidades

a continuación del -f iran los numeros de columna que para cada fila del fichero se quisieran recortar. La forma de indicar columnas es igual que en la orden sort, a diferencia, que en este caso no es necesario precisar el tipo de columna.

-f 1 -5 Cortaria desde la 1 hasta la 5 inclusive

-f 1 5 solo la una y la 5

  • -d indicamos el carácter separador de campo

      • -d :

Por ejemplo:

Queremos cortar la 1,3 y 5 del agenda.new

Put -d: -f 1 -3,5 agenda.new

Sustituir los : por el carácter tabulacion

$ cut -d: -f 2 -4 agenda.new | sed `s/:/^t/g'

EJERCICIOS

Vamos a usar como base el fichero agenda.new

  • obtener un fichero agenda.new ordenado por departamentos

  • obtener los ficheros direct.new, ventas.new y almac.new a partir del fichero agenda.new

  • eliminar el usuario jaime de todos los ficheros con extensión new

  • sustituir a pedro por javier en todos los ficheros con extensión new

  • todos los empleados del departamento dirección cambiaran este campo por direct y el campo final lo pondrán a 123

  • (Pagina 36).

    CUT

    Cut -f 1,3 selecciona la fila 1 y 3

    Cut -f 2-5 selecciona las filas 2 a la 5

    Cut -f 3- selecciona todas las columnas menos la 1 y la 2.

    PASTE

    Concatena de varios ficheros uniendo dos o mas campos en un fichero resultante.

    Paste -d:dni.txt nombre.txt >dninombre.txt

    JOIN

    Permite concatenar varios ficheros en el caso de que un campo que aparezca en ambos ficheros tome igual valor en ambos. Es necesario para que el comando funcione que los ficheros a unir, estén ordenados ascendentemente por el campo o campos utilizados en el JOIN.

    Join [modificadores] fichero1 fichero2

    Los modificadores que podemos usar son:

    • -j n m significa que se va a tener en cuenta el campo “n” del fichero que ocupe la posición “m”.

    • -t es el modificador que dice cual es el indicador de campo que se va a utilizar en los campos del JOIN

    join -t& -j 1 2 -j 2 1 nombredni.dat direccion.dat

    EJERCICIOS

    Vamos a construir un fichero que contenga el codigo de alumno y nombre de alumno, separados por dos punto, y lo guardaremos en alumnos.dat.

    Crearemos un segundo fichero que se llamará “asignaturas.dat”, en donde se guardan las asignaturas que esten cada alumno y cuya estructura de registros será la siguiente:

    código de alumnos : asignatura 1 : asignatura 2 ….

    Un tercer fichero donde se pueda almacenar la información de asignaturas y que llamaremos “asignaturas.dat”, la estructura es:

    Codigo de asignatura : nombre de asignatura

    Con estos ficheros se trata de obtener los siguientes datos.

    • Un fichero donde almacenar el nombre de un alumno y todas las asignaturas en las que esté matriculado

    • Para la asignatura de código 1 listar todos los alumnos que estén matriculados en dicha asignatura (por pantalla)

    • Para los alumnos que estén matriculados en las asignaturas de código 1 al 5 obtener su nombre y nombre de esas asignaturas.

    • Obtener en un listado solo los datos de nombres de alumnos (por pantalla) y un segundo listado para ver por pantalla asignaturas ordenadas descendentemente y sin duplicados

    SHELL DE UNÍS

    BSH

    B Bourn contiene el repertorio de ordenes. Es la base de todas.

    Equivalente al command.com, pero en unís, con los comandos de unís.

    Para activarla $ bsh

    KSH

    K Korn tiene = características que la anterior pero diferencias en los parámetros de los comandos.

    Para activarla $ ksh o sh [+ intro]

    CSH

    Shell que usa los comandos, casi iguales en c,

    Permite saber el lenguaje c y aplicarlo para unís

    Para activarla $ csh

    BSH

    • Objetivo: la programación de scripts de sistemas operativos

    • La máscara de privilegios será como mínimo rwx r - x - r - x.

    • Se creara con el procesador VI, tendremos que hacer con chmod la máscara de privilegios

    • Existe una variable path, como en msdos. Para añadir un fichero, “.\fichero.exe”

    SCRIPT

    • Comandos del SO

    • Definición de variables locales al script

    • Estructuras de control

      • Condicionales (if)

      • Repetitivas (bucles while)

    • Subprogramas

    • Parámetros

    • Interrupciones (Manejar de forma controlada la ejecución de programas o procesos mediante el envio de señales de interrupcion que en ese momento este gestionando el procesador

    FICHEROS

    Los ficheros ocultos en unís se d3efinen como .[nombre del fichero]. Para verlos se utilizará la instrucción: $ ls -la

    Un fichero especial que deberemos tener en $HOME, es el .profile. Todo usuario debe tener un subdirectorio $HOME en el que este el .profile. Si no lo tiene buscara el .profile general

    .profile world

    .profile group (si no tiene profile particular)

    .profile user

    en caso de que existan los tres, el nivel de ejecución irá de user a world. Si no existe se irán descartando en el mismo orden

    en el .profile se delimitaran las variables y las características que son necesarias para que el usuario :

    -correo,

    para ello dentro del profile hay 2 variables básicas:

    • Variable de entorno Path.

      • Se pone una linea:

        • PATH=$PATH:$HOME:$HOME/exe

    • Variable de mail

      • En que fichero fisico del so se va a almacenar el email de cada usuario

        • MAIL= /usr/spool/mail/guiller

    • Operación de export

      • export PATH MAIL

    Todo script de unís admite parámetros de línea de comando (Comando + Parámetros).

    Los parámetros van desde $1 hasta $9.

    El $# indica el numero total de argumentos que hay en linea de comandos.

    Por $$ indica el PID (Proccess Identificator).

    El $? Indica el codigo de retorno. Lo que puede dar de resultado la ejecución de otro script desde aquel en que se ha realizado la consulta de la variable $?. Es util para conocer el resultado de ejecución de un proceso.

    EJERCICIO

    El script se va a llamar script1.exe y va a visualizar por pantalla todos los posibles parámetros que el usuario haya tecleado desde la linea de comando.

    Primero tiene que visualizar el numero total de parámetros

    Después tiene que visualizar el PID del proceso que se esta ejecutando

    El repertorio de parámetros desde $1 hasta $9

    Para hacerlo se utiliza la orden echo y que cada parámetro en una linea distinta, precedida de la constante parámetro n

    ESTRUCTURAS DE CONTROL

  • Tener el algoritmo

  • Conocer en cada posible problema que sintaxis de unís es la mejor para hacer dicho algoritmo

        • Secuencial una línea para cada orden.

        • Condicional se representa por triangulo

  • simple: se indica mediante la orden IF. Chequea una condicion a cierto (THEN) o falso (END).

  • múltiple: se indica mediante la orden CASE. Se puede implementar mediante IF'S anidados. El case facilita la lectura del programa, por lo tanto si se puede se hará mediante case.

        • Bucles o estructuras repetitivas rompemos la secuencia tantas veces como se este marcando en la variable que controla el bucle. Se hace mediante la orden WHILE.

    FOR. La posible vcb no existe, la condicion de vueltas del bucle se asocia a los ficheros o tratamiento de ficheros que tengamos en un subdirectorio

    SINTAXIS DEL FOR

    FOR [$variable del usuario] IN [Lista de valores]

    DO {Indica el cuerpo del bucle. Siempre se pone aunque solo haya una línea}

    Sentencias

    DONE

    ORDEN

    WHILE [ condición ]

    Do

    Sentencias

    Done

    SINTAXIS DE UN MENU

        • Definir una Variable de control

        • Se puede inicializar a un valor

        • Dentro del bucle, limpiamos la pantalla para que nos muestre el menú

        • Todo lo que sean opciones se indicaran por la opción echo.

        • La lectura se hace mediante la orden read y a continuación una variable

    CONDICIONES

        • Tiene la posibilidad de manejar la existencia o no de ficheros

    [ -f rutafichero ] devuelve un true o false dependiendo de si existe o no.

        • La mascara de privilegios la tenemos que tener correctamente. Si no tenemos privilegios nos dara false

        • No se puede usar la referencia >,<,>=,<=,=. Para poder hacerla, hay que usar modificadores o parámetros de condición.

        • el operador menor o igual - le

        • mayor o igual - ge

        • igual - eq

        • menor - lt

        • mayor - gt

        • distinto - ne

      • si se quieren concatenar operaciones lógicas se usa AND y OR, con resultados boléanos

      • -o OR

      • -a AND

      • EJERCICIO

        hacer un script que delimite la ejecución dependiendo el número de parmámetros que el usuario facilite en la línea de comandos. Solo se ejecutará si el número sea igual a 2 y se corresponderan con el siguiente significado.

            • imer parámetro indicará el subdirectorio dentro de $home

            • el segundo es el nombre del fichero contenido en el directorio anterior

        el script debera comprobar, primero la existencia del subdirectorio y a continuación la existencia del fichero. Caso de no existir alguno de ambos, se informará al usuario de la situación de error.

        Cuando ambos existan se visualizará en pantalla el contenido del fichero mediante la orden more, después de haberle añadido una última línea correspondiente a la fecha y hora del sistema.

        DOSKEY EN UNÍS

        • no se puede configurar en el .profile

        • se puede llamar a un script dentro de el para que lo ejecute

        • hay que meterse en la korn shell $ Ksh

        • una vez dentro, pulsamos set -o vi

        • después se mira como si fuera en el vi

        EJERCICIO

        script5.exe

        Menú con las siguientes opciones:

        • contar total ofertas de empleo

        • consultar fuente de información más utilizada

        • la descripción de ofertas de empleo que incluyan como conocimiento ORACLE y/o UNÍS

        • ordenar las ofertas de empleo por nombre de fuente de información

        • salir - fin

        cada opcion a un fichero

        • s51.exe

        • s52.exe

        • s53.exe

        • s54.exe

        SCRIPT 6

      • localizar en la maquina unís los usuarios conectados en un instante dado, visualizando los siguientes datos:

      • login

      • terminal desde donde se esta accediendo

      • pid de los procesos asignados a ese usuario

      • necesitamos conocer el who -a

      • shell que se tenga por defecto

      • passwd

      • nombre del grupo al que pertenece

      • passwd, e identificar el codigo que identifique a cada usuario.

      • group

      • conocer todos los datos de un usuario que esté dado de alta en la maquina unís. Para ello se debera solicitar por pantalla el nombre de login que va a ser consultado, tras lo cual, debera accederse al fichero passwd donde se mostrara toda la información en el contenida referida al login tecleado. Sera necesario comprobar previamente la existencia del usuario y en caso de no existir, deberemos visualizar el mensaje de error para a continuación volver a consultar un nuevo login de nombre.

      • a partir de un nombre de grupo o código de grupo (gid) visualizar todos los usuarios que pertenezcan a dicho grupo, mostrando nombre de login, shell por defecto, y $home por defecto

      • para los usuarios cuya inicial coincida con la tecleada por el usuario, deberemos mostrar aquellos que en ese instante esten conectados al servidor con un encabezado que indique la frase ` usuarios con inicial x conectados al servidor `. Para cada usuario mostraremos nombre de login e instante de conexión.

      • Se realizara con la orden ps (proccess status). Si ponemos ps -a

      • A continuación mostraremos los usuarios que teniendo cuenta en el servidor, no estan conectados en ese instante a dicho servidor. El encabezamiento en ese caso, será ` usuarios con inicial x no conectados al servidor `. En este caso visualizaremos nombre de login y su directorio por defecto.

      • Salir