ALIPSO.COM - Trabajos prácticos, monografías, apuntes, tesis, manuales, material educativo y mucho más.
 

Página de inicio | Agregar a Favoritos | Contactate con nosotros | Publicidad

Alipso.com
 

Monografías

Examenes

Enlaces

Publicar material o sitio

Foros

ABC del estudio

Cursos en CD

Diversión

  Buscar material sobre...
Todas las palabras Cualquier palabra Frase Exacta
El sitio en el que encontrás
todo el material que buscás.

Monografías
 
Apuntes de UNIX 2º CURSO
Informe sobre todo lo que está relacionado con el sistema UNIX.

Agregado: 01 de SEPTIEMBRE de 2003 (Por Michel Mosse) | Palabras: 13877 | Votar! | Sin Votos | Sin comentarios | Agregar Comentario
Categoría: Apuntes y Monografías > Computación > Varios >

  Imprimir Recomendar a un amigo Recordarme el recurso Descargar como pdf


Enlaces recomendados
   

   

Material relacionado
 

Material educativo de Alipso relacionado con Apuntes UNIX CURSO

  • Phreacking:Curso de Cabinas:
  • Curso de Hacking para principiantes: ANONYMOUS FTP:
  • Derecho civil: APUNTES DE DERECHO CIVIL DE LA UBA CATEDRA AMEAL-BRAVO.
  • RESUMENES Y APUNTES DE LA UBA: APUNTE DE CIVIL (PARTE GENERAL) CATEDRA AMEAL-BRAVO


  • Enlaces externos relacionados con Apuntes UNIX CURSO

    Ver enlaces

     


     

     

    Introducción

     

     

    Shell

     

                sh

                ksh à Sustituye a sh (Todo lo de sh y muchas caracteristicas de csh)

                csh à C shell

                jsh à Shell de gestión de tareas.

                rsh à Shell restingido para usuarios inexpertos.

     

     

     


    $ à Prompt de usuario

    % à Prompt en csh

    # prompt superusuario

     

    PS1 à Prompt por defecto.

     

     

    Arbol de directorios

     

     

                                       /

     

     

     


                6 primarios y 2 secundarios

     

                home

     

    A partir de aquí se crean los directorios de conexión de usuarios (A partir de aquí se crean los arboles de directorios)

     

     

    Conexión en red

     

                Directamente en UNIX (TCP/IP)

                PCTCP (Conexión MS-DOS)

     

                Interface à Programa cliente /Independizan hardware y software.

     

     

    Sistema de archivos

     

    ·         Se considera cualquier componente un archivo.

    ·         Tipos:

    ·         Ordinarios

    ·         Dispositivos

    ·         Directorios

    ·         Pipes.

    ·         Etc.

     

     

     

     

     

    Gestión de memoria  (Para más información referirise a apuntes de cursos anteriores).

     

     

    ·         Paginación por demanda

     

    Seguridad

     

                4 niveles

     

    Nombres de ficheros à 14 caracteres (Puede tener o no extensión / Distingue mayusc /minusculas)

     

     

     

     

     

     

     


    INICIO DE SESION

     

     

    ·         Contraseña superusuario (root) à Privilegios /login/

    ·         Sysadm à Usuario administrador que realiza tareas de administración.

    ·         Usuarios à Se pone en contacto con superusuario y este le da de alta dentro de la red con un login unico.

     

    Login:

    Password:

     

    ·         Sistema realiza comprobaciones

    ·         Ejecuta el fichero de configuraciones (.profile) /Existe uno standard por defecto en el sistema/

    ·         Dependiendo del shell utilizado los ficheros de configuración cambian

     

    Ksh à .Kshrc

     

    Mensajes antes de prompt

     

                Motd à Mensajes de día

     

    ·         Permisos por defecto para el root (rw_r__r__)

     

                News à Aparecen las ultimas noticias desde la última lectura del indice

     

                You have mail

     

    ·         Correo nuevo desde la últma lectura.

     

     

    Posteriormente a parece el prompt ($) y se puede comenzar a trabajar.

     

    Linea de comandos

     

     

                $Orden –opciones fichero(s)

     

     

     

    - opciones à Separadas con un flag delante o un unico flag y todas las opciones { Se distinguen mayusculas y minusculas}

     

    fichero(s) à Separados por blancos {Admiten anbiguedad}

     

     

    Ordenes que dan información sobre usuarios.

     

     

    $who à Nombre de usuario , fecha y hora de conexión y otra operaciones.

     

    (para saber si esta abierta la comunicación )

     

    $finger à Más información sobre un usuario determinado.

     

    $write

    $talk

     

                            Conectar dos terminales conectados o abiertos.

    Salir à  CTRL + D

     

    $stty –a à Aparecen los caracteres de control configurados.

     

    $mesg –ny à Cerrar /Abrir la  terminal.

     

    $exit à A nivel de usuario se debe salir de forma lógica y cerrar la sesión.

     

    #shutdown –h –y (Automatico) à Cierra la sesión de superusuario.

     

    Superusuario.

     

                #wall < fichero

                #wall mensaje

     

    ·         Se envia con esta orden a todos los usuarios conectados.

     

     

     

     

     


    $ls à Lista las entradas de un directorio.

     

     

                -a  à Lista ficheros ocultos.

     

                            {.nomb-fich}

                -ai à Nº de i-nodo y nombre del fichero.

     

                -l à formato largo.

     

     

    VARIABLES DEL SISTEMA.

     

    Directorio de conexión à HOME

     

                /home/alumnos/fm21/fm21/f951115

     

                $HOME

     

     

    Directorio de correo à MAIL

     

                MAIL = /usr/mail/f951115

     

    Path à PATH

     

                PATH = $PATH: $HOME/practica: ...

     

    Prompt à PS1

     

                PS1 = “Amalia $”

     

    Shell por defecto à SHELL

     

                SHELL = /usr/bin/ksh

     

     

     


    Formato largo {ls} Continuación.

     

    -          Tipo de fichero {- d c b p}

    -          Mascara de atributos à rwx rwx rwx

    -          Nº de enlaces

    -          Propietario

    -          Tamaño del fichero

    -          Fecha y Hora en el formato establecido.

    -          Nombre del fichero.

     

     

    -R à Recursivo ( Listado de todo el arbol que puelga del nivel inicial)

    -r à Listar en orden inverso

    -d à Listar la entrada de un directorio (No su contenido)

    -F à De que tipo es el fichero y lista en columnas

     

    | pg à Parada de pagina.

     

     

     


    $cat à Visualizar el contenido de un fichero.

     

     

                $cat f1 |pg

     

                $cat f1 > f2

     

                            > /dev/lp

     

    $cat f1 f2 f3 à Concatena en pantallla.

     

    $cat f1 f2 f3 > f4  à El fichero se vacia previamente de contenido antes de concatenación.

     

    $cat f1 f2 f3 >> F1 à Se concatena añadiendo al contenido de f1.

     

     

    $cat f1 _ f2  _ f3  < f4> f5

    ·         Los guiones se toman como entradas atipicas.

     

     

    Cat à Editar ficheros por consola.

     

                $cat > f1

     

     

     

                ^D

     

                cat _f1 _ > f2

     

                ^D

                f1

     

                ^D

     

    ·         Se suele utilizar sin opciones.

     

    -v à Imprime los caracteres de control

     

                $cat f1 f2 f3 > f4  2>/dev/null {Los mensajes de error se direccionan al dispositivo nulo}

     

     

    Ordenes de manejo de ficheros à ln / cp /mv

     

     

     

     

     

     

     

     

     

     

     

    ·         Cuando se realiza un link o se mueve un fichero la información es la misma unicamente se crean nuevos valores de i-nodo o moviendo otro link

     

     

    $ln D1/f1 D2/f2

     

    $ln D1/f1 /D1/f3 à No se crea una copia fisica sino un enlace logico.

     

    ·         En la orden ls existe un campo que lista el numero de links de un fichero

     

     

     


    $mv D2/f2 D2/prac

     

    ·         Con mv se rompe el enlace antiguo y se crea en la tabla nueva.

     

     

    $ln usr/bin/ls /usr/bin/dir à Realiza un enlace del ejecutable ls al fichero dir

     

    $cp /clase/*  . {Directorio actual , el destino nunca se puede dejar en blanco}

     

    ·         La orden mv es equivalente al rem del DOS

     

    $mv D1/f1 D1/f2

    $cp D1/f1 /D2/nominas à Crea un nuevo fichero con un nuevo i-nodo en destino cambiando sus atributos.

     

    $cp f* nominas cosas otrascosas D2 {Destino}

     

    -          Se pueden indicar varios ficheros origen.

     

    $mv f1 fnom D2

     

    $cp –r à Copia de forma recursiva.

     

     

    ·         Es necesario que esten activos los permisos de lectura en origen y de escritura en destino.

     

    -f à Ignora permisos de los ficheros de los que el usuario es propietario

    -y à Pide confirmación.

     

     

     


    $ln –s à Realiza un enlace simbolico. {Linka directorios / Sistemas de archivos diferentes}

     

                $ln –s D1/* D2

     

    -          Para compartir ficheros es necesario tener activado en el directorio donde se va a linkar el permiso de grupo o usuario para escritura.

     

     

    $ln D1/f1 /home/alumnos/fn21/pepe  /home/alumnos/fm21/luis

     

    -          Para borrar un fichero los links no se borran y se ha de ceder la propiedad del enlace para que se pueda borrar.

     

    $chown luis D1/f1

     

     

     

    Borrar ficheros  $rm

     

     

                $rm f1

               

                $rm –f  à Ignorar permisos.

     

                $rm –r à Borra de forma recursiva.

     

                $rm –i à Pide confirmación.

     

     

     

    Ordenes para tratamiento de directorios.

     

    Mkdir à Crear directorio.

     

                $mkdir $HOME/D1 D2 /D2/D22

     

                -p à Crea una rama entera de un arbol de directorios.

     

                            $mkdir –p D2/D22/D222

     

                -m (permisos absolutos en octal)à Cambia permisos en el momento de creación.

     

     

    rmdir àBorrar directorios

     

    cd à Cambiar el directorio actual.

     

    pwd à Directorio actual

     

     

    Editar ficheros.

     

     

    $vi (Mirar fotocopias)

     

     

     

     


    Atributos de ficheros.

     

    chmod à Cambia los atributos de los ficheros.

    umask à Establece una mascara de atributos por defecto.

     

     

     

     

     


    $chmod {u|g|o|a}{+|-|=} fichero(s)

     

     

    ·         ‘=’ Asigna en modo absoluto(lo asigna a uno y se lo quita a los demas). {Depende de versones su funcionamiento}

     

    $chmod u+x fnominas

     

                            rw-  r- - r - -

                            rwx r- - r - -

     

    $chmod ug+x, g+w fnominas

    $chmod g-w fnominas

    $chmod u=w fnominas

     

     

     

     

     

     

     

     

    $chmod 0754 f1

                 1 à Activado bit de archivo para usuario

                 2 à Activado bit de archivo para grupo

                 4 à Fichero bloqueado en memoria (Aparece en ls con una l) à sticky bit

     

     

    $f1 à Ej con permiso.

    $ksh f1 ß Invocar al shell para que ejecute el fichero.

                -x à Ejecución linea a linea.

     

    Umask { Cración de una mascara por defecto}

     

     

    Mascara por defecto 

     

                Directorios à 777

                Archivos à 666

     

    $umask

     

                0022 à Los que se va a quitar a la mascara por defecto

                                      

                                       777 – 022 = 755

                                       666 – 022 = 644

     

    Para que este vigente desde el inicio de la sesión se debe incluir en el .profile.

     

     

     

     


    $chown à Propiedad de un fichero.

     

     

                %chown carlos fnominas

     

     

     

     

    FIND

     

     


    $find à Busqueda de ficheros recursivamente.

     

                $find [origen] –opciones –orden

     

     

    Ordenes:

     

                -print à Imprimir resultados en pantalla.

    -exec à Ejecutar ordenes.

    -ok à ejecutar ordenes con confirmación.

     

    Opciones:

     

                -name à Busca un patron.

                -type

     

                            f à ordinario

                            d à directorio

                            c à esp. carácter

                            b à esp. Bloque

                            p à pipe

     

                -size { |+|-} nn à En bloques de 512 bytes.

     

    -atime +/- nn à Accedidos en nn dias.

    -mtime +/- nn à modificados en nn dias.

    -user

    -group

    -perm (noct) à Busqueda de la mascara especificada. (Solo mascara absoluta).

     

     

    $find $HOME –name “*profile*” –type f –print – exec {} \;

     

    -          Se utilizan las llaves para especificar el nombre de la ruta de acceso actual

     

    -          Si se utilizan comodines en el patron de busque debe llevar dobles comillas,

     

     

    $find –name “f*” –type f –o –type d –size +6 –print –exec chmod u+x {} \;

     

     

    Formas de visualizar un archivo en pantalla.

     

     

    $pg

    $more

    $tail

    $head

     

     


    Salida paginada.

     

    $cat f1 | pg

    $cat f1 | more

     

     

     

     

     


    $tail f1 à Visualiza por defecto las 10 ultimas lineas del fichero.

     

                -n à Nº de lineas.

                +n à Visualiza las n primeras lineas.

     

    -f à Visuliza la salidaa que se este ejecutan de findo en este momento.

     

    -          Se utiliza para quitar las cabeceras de los ficheros.

     

    $ps > fps

     

    $tail +2 f1

     

    $ps –ef |tail +2 à Quita las dos lineas de cabecera.

     

     

     


    $head f1 à Visualiza por defecto 10 lineas de la cabecera.

     

    $pr à Fromatear un fichero por defecto para salida por impresora.

     

     

                $pr –l12 –w40 –d “Cabecera”

     

                            -l à Numero de lineas

                            -w à Numero de col.

                            -d à Doble espaciado.

                            -h “cabecera” à Sustituye la por defecto y coloca la que indiquemos.

    -t à Suprime cabecera standard.

     

     

    Imprimir

     

     

     

    Lp à Imprimir ficheros.

               

     

                $lp f1

     

     

    ·         Configuración de la impresora à Creación de una impresora.

    ·         Direccionamiento à Por nombre de impresora o por calse.

     

     

    -n à nº de copias.

    -m à mensajes con resultado vayan por correo

    -t à Cambiar la hoja de portada.

    -d à Indica impresora por defecto.

    -w à Mensajes a pantalla.

    -c à Se crea una copia en un buffer para que la impresora imprima el fichero en ese momento por si se dan lugar a modificaciones.

     

     

    $lpstat –t ß Estado de la impresora.

     

                -d  ß De una impresora determinada.

     

    $cancel (nº de impresión o nombre de la impresora)  à Se cancela trabajo de impresión.

     

    ·         Si se esta imprimiendo en este momento se debe cancelar la impresora.

     

     

    $lpadmin à Admon. De la impresora.

     

    $fmt  à Formatea el texto al nº de columnas que se le indique.

     

    $fmt –w20 f1

     

     

     

     


    $banner à Formato poster el mensaje que se escriba.

     

     

                Si no se ponen “ “ aparece una palabra en cada linea.

     

    $basename à Sacar del pathname completo, desde el ultimo separador al final.

     

                $basename $HOME

     

                /home/alumnos/fm21/f953272

                $f953272

     

     

     

    $dirname à Sacar del pathname hasta el último separador.

     

                $dirname $HOME

     

                /home/alumnos/fm21/

     

    Ej .-

     

    $echo Yo soy el usuario `basename $HOME` y estoy conectado en el directorio `dirname $HOME`

     

     

    ‘`’ à Operador grae (comillas graves) à Ejecuta la orden y sustituye las comills por la salida de la orden.

     

    $cd $HOME/practicas

    $practicas= `pwd`

    $practicas = $HOME/practicas

     

    $export practicas à Exprotar variable a todas los niveles de subshell

     

     

     


    Variables del sistema

     

     

                LOGNAME à Nombre del usuario.

                            $logname àOrden equivalente

     

                LPDEST à Impresora por defecto.

     

     


    $cal à Saca el calendario del año en curso.

     

                $cal mes año (Hasta el año 2000)

     

    -          Se puede indicar en abreviatura o en formato numerico.

     

    $calendar à Lee un fichero con nombre calendar a nivel de $HOME, donde reconoce todos los formatos de fecha establecidos y lista aquellos que coincidan con fecha actual.

     

     

     


    $echo

     

     

                Sacar información por pantalla.

     

                Echo $nomvar à Devuelve contenido de variables.

     

                Introduce caracteres ANSI

     

                            $echo ESC[carácter ANSI]

     

                $echo ‘Hola “\007” Adiod “\007” ’

     

     

     

     

                $echo “\033” [2J à Borra la pantalla.

     

                            Permite introducir codigos en octal.

                            Metacaracter à Quitar significados del metacaracter del siguiente carácter.

     

                Echo admite caracteres de control

     

    -          Caracteres de control de c

     

    $echo Hoy es viernes \n y quedan 3h de clase

     

     


               

     

    $tput à Introduce caracteres ANSI

     

    $tput clear à Borrar pantalla.

    $tput rev à video inverso

    $tput blink à parpadeo

    $tput bell à bell

    $tput sgr0 à Volver a video normal.

     

     


    $setcolor à Establecer color.

     

     

     


    ·         echo no necesta dobles comillas

    ·         Si se las indica à “metacaracter”

    ·         Si hay más de una linea se le indica con las comillas.

     

     

    $date

     

     

                #date à Cambiar formato de fecha.

     

                $date à Da la fecha y se permite usar un formato particular.

     

     

                %m      %y       %H       %s

                %d       %D       %M      %T

     

    -          Se puede combinar formato con texto y comodines.

    -          Si es # se cambia para todas los usuarios.

     

    -          Si es $ se puede pedir una representación particular.

     

    $date +”Hay es dia : %d del mes de %m del año 19%y \n son las %T”

     

     

     

     

     

     

     

     

     

     

     

    Ordenes de busqueda.

     

     

                $grep à Busca un unico patron con o sin ambigüedad en fichero(s).

                $fgrep à Busca uno o más patrones fijos en fichero(s)

                $egrep à Busca con ambigüedad uno o más patrones en fichero(s).

     

     

     


    $grep ‘patrones’ fichero [{ficheros}..{}]

     

    -          Si el patron lleva espacios o comodines debe llevar dobles comillas.

     

    $grep “curso*” fichUPS /var/UPS/fichcurso

     

                -v à Inverso

                -i à No distingue mayusc /minusc

                -l à Saca nombres de ficheros.

                -n à Numeros de lineas.

                -c à Contador de lineas.

     

     

    $fgrep ‘cosas \n otrascosas \n mascosas’ ...

     

     

    -          cada patron debe ir en una linea.

     

    $fgrep ‘cosas

                otrascosas

                mascosas’ f*

     

    -          Crear ficherode patrones

     

    $vi patrones

    cosas

    otrascosas

    mascosas

    :wq

     

    $fgrep –f patrones f*

     

                ^à Principio de linea.

                $ à Final de linea.

    *à Cadena de caracteres.

                . à Un carácter

                + à Una o más incidencias del carácter al que precede

                | OR logico

                ! Negación.

     

    $egrep ‘[Aa].*$\.’ F*

     

    -          Que empiecen por A o a cualquier cadena cuyo ultimo carácter sea un punto.

     

     

     

     

     

     

     


    $wc

     

                Contador. Cuenta lineas, palabras, caracteres.

     

                -l à Solo lineas.

                -w à Solo palabras.

                -c à Solo caracteres.

     

     


    $cat /etc/passwd |wc –l à Nº de lineas {Nº de usuarios}

     

     

     

     


    $passwd

     

                new passwd:[            ]

               

                            >5 caracteres {Carácter especial letras o numeros}

    $passwd

                old:

                new:

     

    #passwd f9523c à Se leda una password.

     

    /etc/passwd {Estructura del fichero}

     

    nombre_usuario:!:UID:GID:información:dir de conexión:shell

     

    ! à Indica que existe la pasword.

    $passwd –s

     

                /etc/shadow

     

    /etc/group à Alta en un grupo.

     

                Nombre: clave del grupo: gid: ________ : información.

     

     


    ·         Ordenes à Pertenecen al tema de administración.

     

    $du à Espacio que ocupan en disco o un fichero o un directorio, bloques de 512 bytes, si no se ha indicado ningun directorio o fichero se tomará por defecto el actual.

                Todos los ficheros de un directorio estan incluidos, incluso aquellos que esten dentro de los subdirectorios de este.

     

                -a à Acepta nombres de ficheros y de directorios como argumentos.

                -r à Mensajes sobre ficheros que no puedan leerse o abrirse.

    -s à Proporciona el total acumulado en un directorio concreto y (junto con –a) de todos los ficheros.

     

    $df à Da la cantidad de espacio libre de un sistema de ficheros (en bloques de 512 bytes) y el numero de i-nodos libres utilizables en el sistema. El sistema de ficheros puede estar identificado por el directorio de conexión o por el dispositivo. Si no se especifica se dara información de todos los sistemas de ficheros montados.

                -t à Ademas del libre informa del espacio restante y el total.

     

     

    -          Un sistema UNIX para que funcione perfectamente debe tener un 10% de espacio libre en el disco.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     


    SHELL’S

     

     

    ·         concatenado de ordenes con  ;

     

    ·         Direccionamiento:

     

    > Direccionamiento de salida (vacia de contenido el fichero destino).

    < Direccionamiento de entrada.

    >> Doble direccionamiento de salida

    << Doble direccionamiento de entrada

    $mail pepe << “!” à Permite realizar una entrada hasta una clave determinada.

    | Pipe à Permite introducir como entrada de una orden la salida de otra orden.

     

    ·         Descriptores:

     

    0 à Entrada standar.

    1 à Salida standar.

    2 à Salida standar de errores.

     

     

                $cat f1 f2 f3 > f4  2>ferror

     

                            {Concatena f1+f2+f3 à f4 | La salida estándar de error à ferror.

     

                $cat f1 f2 f3 > f4 2&1  [2 va a 1]

     

     

    ·         Variables del SHELL

     

    HOME à Dir de conexión del usuario.

    PATH à Establecer caminos de acceso (separador de caminos ‘:’)

    CDPATH à Caminos de directorios.

    PS1 à Prompt primario.

    PS2 à Prompt secundario.

    LOGNAME à Nombre usuario.

    MAIL à Directorio de acceso al correo.

    MAILFILE à Especificación del fichero de correo.

    SHELL à Shell por defecto.

    TERM à Definición del terminal.

    TZ à Zono horaria.

    MAILCHECK à Chequea el buzon de correo cada x tiempo

    GROUP à Nombres de usuarios para grupo activo.

    MAILRC à Fichero de configuración del correo.

    MBOX à Fichero donde va a parar correo que se lee o no direcciona.

    LPDEST à Impresora por defecto.

     

    Ø       Solo tienen valor en el shell de definición.

    Ø       Para que tengan valor en otros shell’s se tienen que exportar:

     

    $export à Exporta a todos los niveles de shell la variable especificada.

     

     

     

     

     

     

     

    Tareas de fondo.

     

     

                $cat f1 f2 f3 > f4 & {Se indica que la tarea se va a realizar en background}

     

    -          Devuelve el numero de identificador de tarea.

     

    Ø       Cuando se sale de la sesión se realiza la orden KILL a todos los procesos.

    Ø       Existe la posibilidad de que se siga ejecutando una tarea en background una vez se ha desconectado la sesión. à $nohup

     

    $nohup cat f1 f2 f3 |sort > f4

     

     

     


    $kill à Envia una señal especifica al proceso especificado. La señal se indica con un entero y el proceso con un PID. (Señales son dependientes de la implementación y normalmente se indican el fichero /usr/include/signal.h) Podemos encontrar un PID con el comando ps.

     

                $kill 0 à Indica la señal de terminación a todo el grupo de procesos en ejecución (excepto el shell que es inmune a la señal terminar) /Normalmente matara a los procesos ejecutados en background/

     

                9 à SIGKILL à Terminar (No se puede ignorar)

                15 à SIGTERM à Terminar de software (Señal de terminar software)

     

    $nohup à Hace que el comando lanzado ignore la señal de colgar que se emite al desconectar la sesión. La salida del comando se redirecciona al fichero nohup.out (colocado generalmente en el directorio raiz).

     

                $nohup comando [comando-argumentos]

     

     

     


    Ordenes de control de trabajo.

     

     

    ^Z

    bg

    fg

    jobs à Invocar desde cualqier shell (job shell)

    kill

    stop

     

     

     


    Ø       Las ordenes de control de trabajos del shell le permiten terminar un trbajo en modo subordinado(matarlo), suspenderlo sin terminar(pararlo) reanudar un trabajo suspendido en modo subordinado, mover un trabajo de modo subordinado a principal.

     

     

    ^Z  à Permite suspender el trabajo en modo principal. Esto finaliza el programa y devuelve el control al shell

     

    $jobs à Visualizar la lista de los trabajos actuales. La salida muestra los trbajos actuales en modo principal y subordinado, los suspendidos o parados.

    $kill à Se puede terminar con cualquiera de estos trabajos.

     

    Ø       Se utiliza el carácter % como indicador de trabajo.

    $fg à Permite reanudar un trabajo en modo suspendido y devolverlo al modo principal.

     

                $fg %2

    $bg à Reanudar un trabajo suspendido en modo subordinado.

    $stop à Para la ejecución de un trabajo en modo subordinado, pero no lo finaliza.

     

     

     

    Eliminación de significados espaciales en las lineas de ordenes.

     

     

    ·         \ à Desactiva el significado del carácter especial siguiente y la unión de linea.

    ·         ‘ ....’ à Impide que el shell interprete la cadena marcada.

    ·         “ ...” à Impide que el shell interprete la cadena marcada excepto $, dobles y simples comillas y \

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     


    SHELL KORN.

     

     

                El shell korn o ksh es otra alternativa al sh. Desarrollado en 1982 por Davis Korn de los Laboratorios Bell.

                Proporciona un superconjunto de las caracteristicas del shell del sistema V. Incorpora la mayor parte de las caracteristicas que se incorporan en el Shell C..

                Ventaja sobre el csh es que en ksh corren los shells de sh particamente sin modificación.

     

                Presentación e iniciación.

     

                Utiliza dos archivos de iniciación . un solo para presentación y otro cada vez que se ejecute el ksh.

     

    .profile à Buscar los ordenes que se quieren ejecutar y las variables y los valores que se quieren que esten activos a lo largo de la sesión.

    .kshrc à Archivo de entorno especificado en la vasriable ENV (supone que no es un fichero determinado ni de posición fija).

     

     

                Variables del Shell Korn.

     

                El shell implementa todas las caracteristicas de las variables del shell estándar.

    Se pueden definir o redefinir variables, exportarlas al entorno y obtener sus valores. El shell Korn utiliza algunas de las variables del shell del sistema V:

     

    Ø       CDPATH, HOME, LOGNAME, MAIL, MAILCHECK, MAILPATH, PATH, PS1, PS2, SHELL Y TERM

     

    Algunas variables variables importantes utilizadas por Ksh: (.kshrc)

     

    Ø       ENV à Localización del archivo de entorno.

    Ø       HISTSIZE à Cuantas ordenes se guardan en historioco de ordenes.

    Ø       HISTFILE à Fichero historico de ordenes (.sh_history)

    Ø       TMOUT à Espera en seg antes de producirse un fuera de tiempo si no se pulsa ni una sola orden.

    Ø       VISUAL à editor por defecto.

    Ø       EDITOR à Idem.

    Ø       Columns à columnas.

    Ø       FCEDIT à Editor de ordenes Fc.

    Ø       FPATH à Fichero de autocarga de ordenes.

    Ø       LINES à Lineas.

    Ø       PS3 à Prompt para la orden select.

    Ø       PS4 à Prompt de depuración.

     

    Variables internas del Ksh:

     

    Ø       ERRNO à Nº de error de la última llamada fallida.

    Ø       LINENO à Nº de linea actual.

    Ø       OLDPWD à Directorio de trbajo antes de realizar la última orden cd.

    Ø       PPID à PID del proceso padre.

    Ø       PWD à Dir actual.

    Ø       REPLY à

    Ø       SECONDS à Tiempo trnascurrido desde inicio de la sesión.

     

     

    ·         Se pueden establecer variables genericas de entorno, y podráin ser cogidas por una orden para ejecutar sin parametros.

     

    Ø       Las variables pueden ser con o sin nombre (REPLY à Contendrá los parametros de la última orden definida sin nombre).

     

     

     

     


    $time cat f1 à Estaditica de tiempo de ejecución de orden.

     

     

    Ø       # à Nº de parametros definidos como parametros posicionales.

    Ø       ? à Valor de retorno de la ultima orden .

     

    -          0 à Ejecución correcta.

    -          Cod error à No correcta.

    Ø       $  à PID del proceso actual.

    Ø      ! à PID del último comando mandado a ejcutar en background.

     

     

     

     

     


    ·         Forma de asignar la salida de una orden a una variable.

     

     

    $terminal = $(tty)

    $terminal = `tty`

     

     

     

     


    Sustitución de parametros.

     

     

    ${parametro}

     

                $animal = perro

                $echo ver los ${aninal}s

               

    ${parametro:- valor}  à Si parametro tiene algun valor sigue con ese valor, pero si no esta definido se define como valor.

     

                $bebida= agua

                $echo ${comida:-carne} y ${bebida:-café}

     

                $dir= ${1 : - .} à Si $1 no tiene valor se toma como valor el directorio actual.

     

     

    Ø       Se puede introducir un mensaje de error en caso de que una variable no este definida.

     

    $PATH:? NO_PATH}

     

          El ‘?’ indica mensaje de error.

     

    -          ‘=’ à Si no esta definada o tiene valor nulo se le asigna esa valor

    -          ‘+’ à Si parametro esta definido y no es nulo se cambia por valor, pero si valor es nulo, seguirá siendo nulo.

     

    ${#animal} à ‘#’ Devuelve la longitud de la cadena.

     

    ·         De un nombre de fichero con extensión se puede estraer el nombre o la extensión:

     

    $var = abc.123

    $echo ${var %.*}

    abc

    $echo ${var #*.%}

    123

     

     

    Definición de arrays.

                           

    Ø       Rango de indices 0 .. 1023

     

    $file[1] = hola

    $file[2] = que

    $file[3] = tal

     

    Visualizar el contenido de elemento de array

     

    $echo ${file[2]}

     

    Visualizar la longitud del array.

     

    $echo ${#file[*]}

     

    Visualizar todos los elementos del array.

     

    $echo ${file[@]}

     

     

    Historico de ordenes.

     

                El Ksh mantienen una historia de ordenes. Se puede utilizar esta lista para repasar las ordenes que se introdujeron en la sesión. La lista de historico de ordenes se mantiene a lo largo de las sesiones, de manera que se puede utilizar para repasar o reejecutar ordenes de sesiones anteriores.

     

    Vissualización del historicos de ordenes.

     

                $history

     

    Ø       El último elemento de la lista es la orden que se ejecutó en último lugar.

    Ø       El numero de lineas de ordenes del Ksh viene controlado por la variable del shell HISTSIZE.

     

     

    Ø       Se puede visualizar una orden particular de la historia de ordenes como argumento de history.

     

    $hsitory vi

    vi old_note à Visualiza la última orden vi.

    Ø       El archivo en que se almacena la lista de ordenes viene determinado por la variables del shell HISTFILE.

     

     

     

    Reejecución de ordenes.

     

                Se puede ejecutar la orden inmediatamente anterior con la orden r (redo).

     

                $alias r=’fc –e –‘

     

    Ø       Se pueden ejecutar otras ordenes de la lista de ordenes pasandosela como parametro a la orden r.

     

    $r vi

     

    Ø       Se puede volver varias ordenes atrás en la linea de ordenes.

     

    $r –3 à Ejecuta la orden ejecutada hace tres ordenes.(vuelve hacia atrás 3 ordenes en el historico).

     

    Edición de la linea de orden.

     

                Además de ver las ordens anteriores y ejecutarlas, el shell Korn, permite editar la linea de orden actual.

     

     

                Definición del editor à Variables del shell  VISUAL | EDITOR

     

                                       Estableciendo editor por defecto de linea de ordenes à $set –o vi

                                       Variable à $FCEDIT=/usr/bin/vi

     

    Utilización de caracteristicas de un editor del tipo vi.

     

                            El editor opera sobre la linea de orden actual y la lista de historia de ordenes. Cuando se introduce una orden comienza en modo de entrada vi. En cualquier instante se puede entrar en modo de orden pulsando ESC. En modo de orden se puede utilizar las ordenes de edición del editor vi.

     

                Una vez se edita la linea se pulsa INTRO

     

    Ø       Movimiento izq à L

    Ø       Movimeinto dcha à H

    Ø       x à Borra carácter.

    Ø       a à Añadir texto.

    Ø       i à Insertar texto.

    Ø       Salta palabras dcha à W

    Ø       Salta palabras izq à B

    Ø       Comienzo de linea à ^

    Ø       Borrar palabra à dw

    Ø       Reemplazar palabra à cw

     

     

     


    Manejo del historico de ordenes à $fc

     

     

                $fc [-e editor] [-lnr] [primero [ultimo]]

     

                [-e editor] à Definir el editor de la linea de ordenes.

                [primero [ultimo]] à Definir un rango de orden.

                -r à Invertir el orden de los comandos.

                -n à No aparecen numeros de orden.

                -l à Visualiza la lista de comandos.

     

                $fc –l à Visualiza los n ultimos comandos (tamaño del buffer)

     

                $fc 15 17 {Rango}

     

     


    ALIAS

     

                Un alias de orden es una palabra  y una cadena de texto que es sustituida por el shell siempre que se utilice esa palabra.

     

                Permite definir  un nombre para una orden compleja.

     

                $alias nombre=’Orden compuesta’

                $alias yo=’who |grep amalia’

    ·         Los alias se definen en el shell Korn de la misma forma que se definen las variables.

    ·         Aunque a diferencia de las variables estas hay que definirla y exprotarla a otros subshell, mientras que los alias son reconocidos automaticamente en todos los shell’s.

     

     

    $history à $alias history=’fc –l’

     

    $alias à Lista de todos los alias definidos.

     

    Ø       Para quitar el valor de un alias :

     

    $alias nombre

                                       $alias nombre=’’

     

     

     

     

     


    DEFINICIÓN DE FUNCIONES.

     

     

                Function nombre {orden ; orden; ... ; }

     

                Nombre () {orden ; orden ; ... ; }

     

     

    Ø       Si se definen en el shell priincipal se quedan cargadas en memoria.

    Ø       Se pueden definir en cualwuier shell y exportarlas con à $typeset –f

    Ø       Las ordenes pueden tener ambigüedad o llevar parametros posicionales.

     

     

    OPERACIONES ARITMETICAS.

     

     

    $expr expresion à Calcula una expresión y nuestra el resultado por pantalla. La expresion puede ser una cadena, un entero o una construcción más elavorada.

     

                                       Contador = `expr $contador + 1 `

     

    Ø       Los operadores deben ir seguidos y precedidos de blancos.

    Ø       Operadores à - , \* , \ / { Se utiliza el backslash para quitar el valor de metacaracter}

    $let à Ksh.

     

    Ø       Utiliza los rangos de operadores del C.

    Ø       No tener en cuanta los blancos.

     

    $let y = 2*X+5

    $y = `expr 2 \* X + 5`

     

     

     


    Ordenes para salida y entrada por pantalla y teclado (KSH).

     

                Para imprimir ademas del echo se puede utilizar:

     

                            $print <mensaje>

     

                Para leer por teclado (dentro de un guión).

     

                $read –opciones var1? Var2 var3 ...

     

    -          Var1? à Mensaje.

     

    Evaluación de expresiones.

     

                $x = ‘abc def’

                $y =  $x

                $echo $y

                            $x

                $eval echo $y

                ‘abc def’

     

     

     


    $exec

     

                $ksh à Versión iniciar sh.

     

                $exec ksh à Comineza de nuevo la sesión ksh como shell principal.

     

     

     

    ~ à Sustituye el directorio de conexión.

     

                ~/programas

                $HOME/programas

                /home/alumnos/fm21/f951115/programas

     

    Ø       Puede sustituir solo parte del directorio de conexión.

     

     

    ~/fm21/f951115/programas

     

     

     

     

     

     

     

     


    Fijación de las opciones del shell Korn.

     

     

    $set à Cambia la configuración o estable nuevos parametros de configuración dentro del ksh.

     

     

                $set –n à Comprueba errores de ejecución.

               

                $set –a à Variables son exprotadas automaticamente.

               

                $set –U à Con un fichero de ordenes lista las ordenes segu´n se ejecutan.

               

                $set –m à Notificación de terminación de procesos en background.

     

                $set –o vi à Editor por defecto.

     

    $set –o ignoeeof à Impede la despedida accidental de la sesión cuando se pulsa CTRL+D

    Con esta opción se debe teclear exit para terminar la sesión.

     

    $set –o noclober à Impide direccionamientos a un fichero existente.

     

    Si se quiere indicar que realmente se quiere sobreescribir se debe colocar la barra de cauce ‘|’ despues de la redirección.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     


    PROGRAMACION SHELL

     

     

     

    $chmod u+x pract1

    $pract1

     

                à Permisos de ejecución.

     

    $ksh pract1

    $ksh –x pract1 à Ejecución en modo traza

     

                            à Ejecución en un shell secundario.

     

    Ø       Para ejecuctar en el shell proncipal se debe indicar con la orden:

     

    $ . pract1 { Si no se pone el punto se invoca a un subshell por defecto}

     

     

    Ej.-

     

    $pwd

    à HOME/practicas

    $(date;cd..;ls)

    $pwd

    à HOME/practicas

     

    ·         Cualquiere modificación se realiza a nivel subshell y cuando se recupera el shell principal se recupera el entorno anterior, perdiendo las modificaciones de las variables de entorno del subshell

     

    Ø       Para ejecutar ordenes agrupadas a nivel de shell principal se utilizan à { }

    Ø       Para ejecutar ordenes agrupadas a nivel de subshell se utilizan à ( )

     

     

    Otra forma de ejecutar ordenes:

     

     

                $ksh

     

               

    $exec ksh à Se coloca como shell principal y el shell anterior desaparece como shell principal.

     

     

    Conmentarios

     

                # à No interpretados.

                : à Interpretados (Sustituye variables por su valor)

     

    Parametros posicionales.

     

    $vi shell1

    cp $1/a* .

    mv $3/* .

    echo Hay $# parametros posicionales

    #Para visulizar el numero de parametros pos.

    echo $*

    #Para visulizar todos los parametros

     

     


    $chmod u+x shell1

    $shell1 D1 D2 PRATICAS

     

     

    $0 à Nombre del programa.

    $1 – {99} à Parametros posicionales posibles

     

    Ø       Por encima del 9 se deben indicar entre llaves para que se interprete el número completo.

     

     

     

     


    $at à Lanzar procesos en diferido.

     

    $at –f fichero [Especificación de tiempo]{Todo lo que no se indique será tomado como actual.

     

                $at –f f1 6am Friday

                $at –l à Listado de lo lanzado.

     

                $at –r [    ]  à Retirar la orden {Especificación del ID de la orden obtenida en at –l}

     

     

     


    Ø       No todos pueden usar el comando at:

     

    -          El superusuario crea un fichero para saber quien puede usar el fichero o no .

     

    /etc/cron.d/at_allow

    /etc/cron.d/at.denny

     

    Donde se encuentra un nombre de usuario por linea.

    ·         Si no existen estos ficheros solo lo puede usuar el root.

    ·         Si existe el segundo de los ficheros pero esta vacio todos pueden usar el comando at.

    ·         Solo puede existir uno de los ficheros a la vez.

     

     

     


    DEMONIO à Proceso que crea un usuario, superusuario o sistema y que una vez lanzado es gestionado por el sistema y ya no esta bajo el control del usuario que lo lanzó.

     

    $vi demonio-1

     

    cd ${PAPELERA:- $HOME/junk}

    rm –r

    at midnight Friday << ! {Direccionamiento de entrada hasta que encuentre el carácter indicado}

    demonio-1 &

    !

    :wq

    $chmod u+x demonio-1

    $demonio-1 &

     

    Ø       Se puede utilizar el cron (demonio del sistema) para ejecutar este tipo de ordenes sistematicas.

     

    $touch fichero à En el modo-i se mantiene información sobre el momento de creación, modificación y acceso de un fichero. Por defecto el comando touch actualiza las fecha de modificación y acceso, con información temporal especificada o fecha y hora del sistema.

    Por defecto, un fichero nombrado que no existe se crea.

     

    -a à Actualiza solamente horas de acceso.

    -m à Actualiza horas de modificación.

    -c àNo crea fichero si no existe.

     

     

     

     


    ·         La roden set nos permite establecer variables de entorno

     

     

    $set var =`ls –n`

     

    -          Si se da una orden sin argumentos se toman por defecto los del entorno.

     

    $echo $var

     

                f1 f2 ....

                $1 $2 ...

     

     

    Ø       Las variables pueden no tener nombre: {$reply}

     

    ($*)  à Referencia a la variable sin nombre.

     

    -          Solo puede haber una variable sin nombre.

     

     

    $set fecha= `date + ------- `

     

     


    $trap à Esta orden permite espeficar una secuencia de ordenes que se ejecutan cuando se reciben señales de interrupción en los programas shell.

     

                Formato general:

     

                            $trap {‘orden; orden; ...; orden’} señales

     

    ·         El primer argumento de trap se toma como la orden u ordenes a ejecutar. Si se tienen que ejecutar una secuencia de ordenes se han de incluir entre comillas simples

    ·         Las señales son los codigos de las interrupciones. Las más importantes son:

     

    -          0 à Salida del shell.

    -          1 à Colgar

    -          2 Interrupción, DELL

    -          3 à Salida.

    -          9 à Matar (No puede ser interrumpida).

    -          15 à Terminación (Kill normal).

     

    $trap ‘cat .ch_history>>$home/ordenes.his; rm .sh_history’ 0 1 3 15 {Posibles salidas del sistema}

     

     

     

    Exit à Cuando un proceso termina devuelve un valor de salida a su proceso padre. La orden exist es una orden de shell interna que hace que el shell slga y devuelva un valor de estado de salida. Por convención el estado 0 significa terminación normal, y un estado distinto de 0 significa que sucedió algo anormal

     

     

     


    $xargs à Una de las caracteristicas más utilizadas de la programación es la de conectar la salida de un programa con la entrada de otro utilizando cauces. A veces se utiliza la salida de una orden para definir los argumentos de otra

     

                Es una herramienta de programción shell que permite combinar la entrada de una tuberia o cauce con la entrada de parametros posicionales de un shell script.

     

                $xargs[ indicadores] [orden (argumentos iniciales)]

     

    Ø       Toma los argumentos iniciales , los combina con los arguemtnos leidos desde la entrada estandar y utiliza la combinación para ejecutar la orden especificada.

     

     

    $ls $1 | xargs –i –p mv $|() $2()

     

    $find :  -name “a*” –type f –exec rm {}\;

     

    $find –type f –print |xargs grep –l –i $@

                                                         $* { Todos los argumentos de la linea de ordenes.

     

    -          Funde la entrada de la orden find.

     

     

    $echo $* | xargs –n2 –p diff

                              { Argumentos de dos en dos}