Unix
CURSO
SISTEMAS OPERATIVOS I
SEMANA
SEGUNDA SEMANA
TEMA
PROGRAMACIN EN SHELL
omar2093@hotmail.com 2013-I
Dr. Roberto Gmez Diapo. No. 1
Introd. Unix
Funciones principales: - control del hardware - compartir memoria entre los diferentes elementos - compartir CPU entre los diferentes procesos - controlar la creacin y el acceso de los archivos
UNIX
Hardware
Diapo. No. 2
Introd. Unix
Thompson desarrolla lenguaje B Ritchie crea lenguaje C 1973: Unix fue reescrito en C UNICS: Sistema de Informacin y Computo con Uniplexin
Dr. Roberto Gmez Diapo. No. 3
Descendiente directo Fuerte Influencia Versin 6 (1975) Laboratorios Bell AT&T (c. 1969-1970)
Introd. Unix
BSD (1977)
Versin 7 (1977)
Diapo. No. 4
OSF/1 (c.1992)
Introd. Unix
BSD
System V.3
OSF/1
System V.4
SCO UNIX
Linux
Diapo. No. 5
implementacin
Introd. Unix
- Un nombre de usuario
8 caracteres como mximo, creado por el administrador del sistema, (apellido, nombre, matrcula) - Una clave de entrada o password Creada por el administrador del sistema y modificada por uno mismo formada por al menos seis caracteres, (al menos dos caracteres deben de ser diferentes a letras) Para "loguearse", (firmar) login: rogomez Password: Si hay algun error: Login incorrect
login:
Si todo se pasa bien, aparece el "prompt": $ para el bourne shell % para el C-shell
Diapo. No. 6
Introd. Unix
El Shell
El shell es un programa que lee lneas de comando de una terminal o archivo, las interpreta, y le indica a UNIX que hacer Interfaz entre los usuarios y UNIX Interprete de comandos Es un lenguaje de programacin El shell no es parte del sistema operativo Tipos de shells: Bourne Shell (sh) el ms viejo de los principales shells de UNIX C-shell (csh) es el principal del UNIX BSD, sintaxis cercana al del lenguaje C posibilidad de controlar las tareas (job control), ms fcil de usar interactivamente Korn shell (ksh) es una extensin del Bourne shell algunas extensiones: posibilidad de contar con un histrico de los comandos y editar una lnea introducida anteriormente C-shell extendido (tcsh) versin mejorada del csh, que ofrece edicin interactiva de comandos almacenados en el histrico es de dominio pblico Bash shell shell de Linux, proporcionado por la Free Software Foundation, significa Bourne Again Shell compatible con sh ofreciendo edicin interactiva de lneas de comandos pasados
Dr. Roberto Gmez Diapo. No. 7
Introd. Unix
El ambiente UNIX
Cuando uno se "loguea", (entra) al sistema UNIX, el sistema les proporciona un Shell. Este Shell proporciona al usuario un ambiente propio El ambiente del usuario contiene toda la informacin necesaria, as como ciertas variables El Shell almacena los siguientes tipos de variables: + las variables locales
Diapo. No. 8
Introd. Unix
$printenv
MANPATH=/usr/dt/man:/usr/man:/usr/openwin/share/man LANG=en_US OPENWINHOME=/usr/openwin EDITOR=asedit LOGNAME=rogomez MAIL=/var/mail/rogomez PS1=$PWD $ TERMCAP=sun-cmd:te=\E[>4h:ti=\E[>4l:tc=sun: USER=rogomez LC_MESSAGES=C LC_CTYPE=en_US DISPLAY=:0.0 SHELL=/bin/ksh TERM=sun-cmd PWD=/home/rogomez
HOME=/home/rogomez
LC_COLLATE=en_US LC_NUMERIC=en_US TZ=US/Central HOST=armagnac.cem.itesm.mx HOSTTYPE=sun4 ENV=/home/rogomez/.kshrc VENDOR=sun OSTYPE=solaris MACHTYPE=sparc SHLVL=1 GROUP=unknown $
Dr. Roberto Gmez Diapo. No. 9
Introd. Unix
$set dcwd /home/rogomez dirstack /home/rogomez echo_style bsd edit gid 40 group unknown history 40 home /home/rogomez ignoreeof lpath (/usr/local/bin /usr/local/mtools /usr/local/ioffice/bin) mychoice openwin mypath /home/dic/rogomez/bin/ noclobber owd /home/rogomez path (. /home/rogomez /usr/openwin/bin/xview /usr/openwin/bin /usr/sbin /usr/ccs/bin /home/rogomez/bin /home/rogomez/bin /usr/local /usr/ucb /usr/bin /usr/etc /usr/local/bin /usr/local/mtools /usr/local/ioffice/bin) prompt rogomez@armagnac:%h> prompt2 %R? prompt3 CORRECT>%R (y|n|e|a)? shell /usr/local/bin/tcsh shlvl 1 status 0 tcsh 6.07.02 term sun-cmd tty pts/9 uid 2903 user rogomez $
Dr. Roberto Gmez Diapo. No. 10
Introd. Unix
Las variables
El Shell permite almacenar valores dentro de las variables El nombre de las variables debe de comenzar por una letra o un "_", seguida por cero o ms caracteres alfanumricos o un "_" Existen dos formas de asignar un valor a una variable:
$mon_bin=/usr/toto/bin
El contenido de una variable es una cadena de caracteres Para acceder el contenido de una variable, se debe anteceder el caracter "$" a su nombre. Si se necesita desplegar su contenido se debe utilizar el comando echo. Ejemplo: $ echo $mon_bin /usr/toto/bin $ Existen variables utilizadas por el shell (variable de ambiente, por convencin en maysculas) que son creadas e inicializadas en el momento en que el usuario entra al sistema Ejemplo: $ echo $TERM $HOME
sun-cmd /home/dic/aortiz
$
Dr. Roberto Gmez Diapo. No. 11
Introd. Unix
La variable PATH
El Shell utiliza esta variable para saber donde buscar los comandos a ejecutar, cuando el camino de acceso no se proporciona
Los valores comunes son: bshell, kshell PATH=.:/bin:/usr/bin PATH=/bin:/usr/bin:. cshell, tcshell set path = (. /usr/local /usr/ucb /usr/bin /usr/etc) set path = (/usr/local /usr/ucb /usr/bin /usr/etc .)
+ en el primer caso, el directorio actual es explorado primero + en el segundo caso, el directorio actual es explorado al ltimo Un ejemplo de modificacin de la variable PATH es: $PATH=/bin:/usr/bin:.:$HOME/bin (b-shell) %set path=($path /home/rogomez/bin (c-shell)
Dr. Roberto Gmez Diapo. No. 12
Introd. Unix
El archivo .login + Este archivo contiene los comandos ejecutados al momento del login, siempre y cuando se ultize C-Shell + Puede ser utilizado para: - inicializar una aplicacin ( p.e. mail) - inicializar las variables de ambiente El archivo .cshrc + Contiene los comandos ejecutados en la inicializacin de todo C-Shell. El C-Shell ejecuta los comandos que se encuentran en el archivo .cshrc antes de ejecutar los del archivo .login + Puede ser utilizado para: - definir alias - inicializar las variables locales al C-Shell ( p.e. HOME) El archivo .logout + Contiene los comandos ejecutados al final de la sesin, (despus del comando logout ) + Puede ser utilizado para: - visualizar las informaciones estadsticas de toda la sesin de trabajo - borra la pantalla, para evitar indiscreciones
Diapo. No. 13
Introd. Unix
Ejemplo .login
# archivo .login # mostrar fecha echo Hoy es date # fijar las opciones de la terminal stty echo echoe erase H #fijar las variables del entorno setenv SHELL /usr/bin/csh setenv TERM vt100 setenv MAIL /usr/spool/mail/SUPER #definicion ambiente ventanas if ( !{$OPENWINHOME} == 0 ) then setenv OPENWINHOME /usr/openwin endif if ( ! -e $OPENWINHOME/bin/openwin ) then set mychoice=sunview endif if ( !{$OPENWINHOME} == 0 ) then setenv OPENWINHOME /usr/openwin endif
Diapo. No. 14
Introd. Unix
Ejemplo .cshrc
# fija las variables del shell set cdpath = ( . $home $home/work/project /usr/spool/uucppublic set path = ( /usr/bin /$home/bin . ) set history = 40 set prompt = `whoami`@`hostname|cut -d. f1`>
# activa ignoreeof y noclobber set ignoreeof set noclobber # definir alias alias cx chmod +x alias ll ls -la alias h history alias m more alias wg who | grep # fija permiso default para creacion sw archivos umask 0777
Diapo. No. 15
Introd. Unix
Ejemplo .logout
Diapo. No. 16
Introd. Unix
Ejemplo .profile
# Haciendo globales alguna variables export MAIL PATH TERM # Estableciendo la mascara de permisos de archivos umask 022
Diapo. No. 17
Introd. Unix
Cambio de clave-password
El comando passwd permite modificar el password de un usuario, para esto el usuario deber de conocer el password de la cuenta que desee modificar.
[ -e username] [- F filename]
[ -n numdays username] [-x numdays username] [ username ]
Ejemplo: $ passwd
Changing password
Old password: <antiguo password> New password: <nuevo password> Re-enter new password: <nuevo password>
Diapo. No. 18
Introd. Unix
El manual UNIX
2) Llamadas de sistema
3) Subrutinas 4) Dispositivos
6) Juegos
7) Varios 8) Administracin de Sistema
DESCRIPTION
WARNINGS SEE ALSO BUGS DIAGNOSTIC
EXAMPLE
FILES
Sintaxis man [ opcion ] [ seccion ] titulo(s) Opciones: -k busca la cadena "titulo" en los manuales y da las partes "NAME" de las pginas correspondientes.
Ejemplo:
$ man mkdir
Dr. Roberto Gmez Diapo. No. 19
Introd. Unix
USER COMMANDS
TTY(1)
SYNOPSIS
tty [-s]
DESCRIPTION
tty prints the pathname of the users terminal unless the -s (silent) option is given. In either case, the exit value is zero if the estndar input is a terminal, and one if it is not.
OPTIONS
-s Silent. Does not print the pathname of the users terminal.
Diapo. No. 20
Introd. Unix
TTY(4)
DESCRIPTION
The file /dev/tty is, in each process, a synonym for the controlling terminal of that process, if any. Is is useful......
IOCTLS
In addition to the ioctl() requests supported by the device that tty refers to, the following ioctl() request is supported: TIOCNOTTY Detach the current process from its controlling terminal, and remove it from its......
FILES
/dev/tty
SEE ALSO
termio (4)
Introd. Unix
rogomez@armagnac:79> more /usr/man/man1/tty.1 .\@(#)tty.1 1.10 90/02/15 SMI; form UCB 4.2 .TH TTY 1 9 September 1987 .SH NAME tty \- display the name of the terminal .SH SYNOPSIS .B tty [ .B \-s ] .IX tty command \fLtty\fP \(em get terminal name .IX get terminal name \(em \fLtty\fP .IX terminal get name of get name of \(em fLtty\fP .IX login enviroment TTY \fltty\fp \(em get terminal name .SH DESCRIPTION .B tty prints the pathname of the users terminal unless the .B \-s (silent) option is given. In either case, the exit value is zero if the estndar input is a terminal, and one if it is not. .SH OPTIONS .TP .B \-s Silent. Does nos print the pathname of the users terminal
Diapo. No. 22
Introd. Unix
Comando apropos
sintaxis: apropos keyword depliega el nombre de la pgina, el nmero de seccin y una pequea descripcin de cada pgina del manual cuya lnea de nombre contenga keyword. ejemplo: rogomez@armagnac:80>apropos tty
Diapo. No. 23
Introd. Unix
La lnea de comandos
La lnea de comandos empieza en el prompt del Shell, hasta el <RETURN> La primera palabra es el nombre de un archivo ejecutable, o de un comando interno del Shell El comando puede ser seguido por una o ms opciones, y/o uno o ms argumentos, (separados por espacios o tabulaciones) La lnea de comando no es ejecutado antes del <RETURN> El Shell contiene cuatro tipos de lneas de comandos: - simple - secuencial - pipeline - agrupado
Para poder capturar una lnea de comando muy larga, es posible de insertar el caracter " \ " al final de la primera lnea, despus de teclear <RETURN> para poder teclear el resto de la lnea de comando en una segunda lnea de la terminal
- Ejemplo: $ ~/bin/xvile articulo.tex -display \ rogomez:0.0
Diapo. No. 24
Introd. Unix
Es necesario dejar un espacio: + entre el nombre del comando y las opciones y/o los argumentos + entre las opciones y los argumentos + entre los argumentos
Un comando tiene opciones por default, si se quiere utilizar estas opciones se tiene que realizar: $ nombre-comando <RT>
En caso contrario los siguientes formatos son posibles: $ nombre-comando argumento(s) <RT>
Diapo. No. 25
Introd. Unix
Diapo. No. 26
Introd. Unix
Qu son? - Informacin asociada a un nombre - Considerada como una serie de bytes: + Caracteres ASSCII + Cdigo mquina - Almacenados en un disquete, disco duro, o banda
Tipos de archivos 1. Ordinarios - Contienen una serie de bytes (ASCII, binarios, ambos) - Estructura interna definida por el usuario 2. Directorios 3. Especiales perifricos, (descriptores) - Indican a UNIX cual driver se debe utilizar - Le proporcionan al driver las opciones a utilizar - Se encuentran dentro del directorio /dev
Diapo. No. 27
Introd. Unix
Creacin de archivos
Diapo. No. 28
Introd. Unix
Cada archivo, comprendidos los directorios y los archivos especiales, es referenciado por un nombre
Caractersticas del nombre: - 14 caracteres de longitud mxima (sistema V) o 255 (BSD 4.x) - Puede contener cifras y letras (minsculas y/o maysculas) - El primer caracter no puede ser: - + =
.cshrc
source.c cb.027-01 Utilizar convenciones para los nombres de los archivos Archivos invisibles: empiezan con .
Diapo. No. 29
Introd. Unix
Los directorios
Contienen dos tipos de informacin - El nombre del archivo - El nmero de bloque de control (numero-i) El directorio contiene estas informaciones para todos los archivos, otros directorios, y/o archivos especiales que se encuentran a nivel inferior
Cada directorio es creado con dos entradas: - "." - ".." una referencia a l mismo una referencia a su padre
Cuando se entra al sistema ("loguearse"), UNIX posiciona al usuario en un directorio: es el directorio HOME
Diapo. No. 30
Introd. Unix
/lib /tmp
como zona de
/dev
/usr
/usr/bin contiene los comandos complementarios /usr/ucb contiene los comandos especficos BSD 4.x /usr/lib contiene las libreras y los programas suplementarios. Tambin contiene los programas de administracin de las impresoras y comunicacin /u o /udd los directorios de los usuarios pueden encontrarse dentro de sistemas de archivos separados, como /u
Dr. Roberto Gmez Diapo. No. 31
Introd. Unix
El directorio HOME
Directorio creado por el administrador del sistema, generalmente es creado dentro del directorio /usr, /u o /udd
Despus del "login:" el usuario se encuentra dentro de este directorio, (que se convierte en su directorio de trabajo)
Normalmente, el usuario trabajar en los directorios que se encuentran dentro del directorio HOME
Una forma de accesarlo desde cualquier directorio es a travs del caracter "~", por ejemplo: $ pwd /home/usr/toto/tareas $ cp ~/bin/xvi .
Diapo. No. 32
Introd. Unix
Cada archivo es referenciado por su camino de acceso, (pathname) el cual esta formado por: - un nombre o una sucesin de nombres - separados por "/" - terminado por el nombre del archivo o directorio deseado
Existen dos formas de especificar un camino de acceso 1. absoluto Se especifican todos los directorios necesarios para accesar un archivo $ /home/sunlab/dic/rogomez/bin/xvile 2. relativo Se trabaja sobre el directorio de trabajo $ bin/xvile
Diapo. No. 33
Introd. Unix
Sintaxis: ls [opciones]
Algunas opciones: -a -l -d -s -u -t -i -C -g lista los archivos que comienzan con un "." listado en formato largo si el argumento es un directorio lista el nombre del archivo directorio y no su contenido da el tamao de los archivos en kilo-bytes despliega la ltima hora de acceso en lugar de la ltima hora de modificacin acomoda los archivos en funcin de la hora de la ltima modificacin imprime el nmero de referencia (i-node) de los archivos lista los archivos en columnas muestra el propietario del grupo de un archivo en un formato largo
Diapo. No. 34
Introd. Unix
Ejemplo:
$ ls -l
total 4
d r w x r - x r - x 1 cachafas d r w x r - x r - x 1 cachafas - r w x r - x r - x 1 cachafas - r w - r - x - - x 1 cachafas $ 512 Oct 12 10:13 Sundraw 512 Dec 11 20:13 Sunpaint 512 Sep 15 18:13 toto 512 Jan 12 01:14 curso.html
Despliega la siguiente informacin: - El tipo de archivo: d c r normal directorio especial (perifrico en modo caracter) lectura
w
x -
escritura
ejecucin acceso no permitido
- Nmero de ligas - Propietario - Tamao - Fecha y hora de la ltima modificacin - Nombre del archivo o directorio
Diapo. No. 35
Introd. Unix
copia uno o varios archivos hacia la salida estndar (la pantalla por default)
Sintaxis: Ejemplo $ cat archivo.txt - pwd print working directory cat nombre-archivo
despliega el camino de acceso del directorio actual (donde se encuentra dentro del sistema de archivos). despliega el nombre de un directorio nunca el de un archivo Sintaxis: Ejemplo: $ pwd /home/dic/rogomez/Perso $ pwd
Diapo. No. 36
Introd. Unix
Comandos UNIX
- cd permite cambiar de directorio
Sintaxis:
Ejemplo:
cd [ nombre-directorio ]
- mkdir
creacin de directorios
Sintaxis: Ejemplos: $mkdir /usr/usr2/alumno1 $mkdir test direc1 rep2 $mkdir arbo arbo/rep1 mkdir directorio [ directorio ]
- rmdir Borrado de directorios Sintaxis: Ejemplo $rmdir tareas rmdir directorio [ directorio ] rmdir no borrar el directorio si este no se encuentra vaco
Diapo. No. 37
Introd. Unix
Comandos UNIX
- date Despliega la fecha y la hora
Sintaxis:
Ejemplo:
date
$ date Mon Oct 10 15:58:58 MET 1988 $ La impresin del comando date puede ser reformateada Ejemplo:
Una variante es whoami que despliega informacin correspondiente a la persona conectada a la terminal donde se tecleo ese comando
Dr. Roberto Gmez Diapo. No. 38
Introd. Unix
Comandos UNIX
- cp copia un archivo ordinario Sintaxis: cp archivo1 archivo2 cp archivo [archivos ] directorio Ejemplos $ cp arch1 arch2 $ cp arch1 direc $ cp arch1 direc/arch2 $ cp arch1 arch2 arch3 direc $ cp -r cp no modifica los archivos originales, tan solo los duplica opcin -r = copia recursiva: si es un directorio copia el contenido de este -mv (move) desplaza un archivo o lo renombra Sintaxis: mv antiguo-nombre nuevo-nombre mv archivo [ archivos ] directorio
Ejemplo:
$ mv arch-a arch-b $ mv direc1 direc2 $ mv arch1 arch2 arch3 arch4 direc $ mv arch1 ../bin/fx
Diapo. No. 39
Introd. Unix
Comandos UNX
- ln (link) crea un nuevo nombre para un archivo, (til para archivos sistemas, evitar copiar dos archivos con el mismo nombre => ahorrar espacio ) solamente con la opcin -s se puede cambiar el nombre a un directorio Sintaxis: Ejemplos
$ ls -li total 2 14411 -rw-r--r-14412 -rw-r--r-$ ln arch1 fichier $ ls -li total 3 14411 -rw-r--r-14411 -rw-r--r-14412 -rw-r--r-2 rgomez 2 rgomez 1 rgomez 412 Oct 10 16:56 arch1 412 Oct 10 16:56 fichier 167 Oct 10 16:57 archivo 1 rgomez 1 rgomez 412 Oct 10 16:56 arch1 167 Oct 10 16:57 archivo /* listado largo con i-node */
ln archivo nuevo-nombre
Diapo. No. 40
Introd. Unix
Comandos UNIX
- ln (link) En BSD 4.x es posible crear ligas simblicas entre archivos o directorios correspondientes a sistemas de archivos diferentes Sintaxis: Ejemplos
$ ls arch1dir1 $ ln -s arch1 fichier $ ls -li total 3 14411 -rw-r--r-14412 lrwxrwxrwx 38935 drwxr-xr-x 1 rgomez 412 Oct 10 16:56 arch1 1 rgomez 4 Oct 10 17:09 fichier -> arch1 2 rgomez 512 Oct 10 17:09 dir1
ln -s archivo otro-nombre
$ ln -s dir1 repertoire
$ ls -li total 4 14411 -rw-r--r-14412 lrwxrwxrwx 38935 drwxr-xr-x 14413 lrwxrwxrwx $ 1 rgomez 412 Oct 10 16:56 arch1 1 rgomez 2 rgomez 4 Oct 10 17:09 fichier -> arch1 4 Oct 10 17:10 dir1 -> repertoire 2 rgomez 512 Oct 10 17:09 dir1
Diapo. No. 41
Introd. Unix
Comandos UNIX
- rm (remove) borra el nombre de un archivo si ese nombre fuera el ltimo (numero de ligas = 1), el archivo ser "fsicamente" suprimido Sintaxis: Ejemplo: $ rm arch1 Opciones: rm archivo [ archivos ]
-r
-f -i - echo
imprime sus argumentos sobre la salida estndar (la pantalla por default) Sintaxis: Ejemplo: $ echo prueba del comando echo prueba del comando echo $ echo $ echo [ argumentos ]
Diapo. No. 42
Introd. Unix
Ms comandos UNIX
- which
Localiza un comando desplegando su pathname o alias Sintaxis: which [filename]...
Descripcin: which toma una lista de nombres y busca por los archivos que seran ejecutados al escribir estos nombres como comandos. Cada argumento es expandido y buscado dentro del path del usuario. Tanto los alias como los paths son tomados del archivo .cshrc Ejemplo: $which xeyes /home/dic/rogomez/xeyes $which opnet opnet: Command not found
Diapo. No. 43
Introd. Unix
Cuando se realiza una conexin a un sistema UNIX tres archivos, (descriptores), son abiertos: 1. Entrada estndar, (stdin): el teclado por donde se teclean los comandos 2. Salida estndar, (stdout): la pantalla donde son desplegados los resultados de los comandos 3. Salida de errores, (stderr): la pantalla donde son desplegados los errores eventuales Un nmero, (el descriptor de archivo), es asignado a cada archivo: 0: entrada estndar 1: salida estndar 2: salida de errores
stdout
UNIX
stdin stderr
Diapo. No. 44
Introd. Unix
Algunos comandos no leen sus argumentos de la entrada estndar sino de uno o ms archivos
Ejemplo: $ cat arch1 arch2 lee los archivos "arch1" y "arch2", desplegando su contenido en la salida estndar.
stdout
cat
stdin stderr
arch1 arch2
Diapo. No. 45
Introd. Unix
<
>
>> redireccin de la salida estndar (aadir/agregar) La redireccin de la salida de error depende del shell. bshell cshell
2> redireccin de la
salida de error 2>&1 redireccin de la salida estndar y de error
Diapo. No. 46
Introd. Unix
$mail profesor < tarea.txt La entrada estndar ser el archivo " tarea.txt "
stderr
mail
stdin
stdout
/usr/spool/mail/profesor tarea.txt
Diapo. No. 47
Introd. Unix
stderr
cat
stdin stdout final.txt arch1 arch2
Diapo. No. 48
Introd. Unix
$echo ERRORES DE COPIA >> log - La salida estndar del comando echo ser el archivo "log" - Si el archivo no existe, ste ser creado - Si el archivo ya existe, se aadir el resultado del comando echo al final de dicho archivo
stderr
mail
stdin stdout
log
Diapo. No. 49
Introd. Unix
Para bshell: $ls x $cat x Este es el archivo x $cat x y 1> algo 2> error $cat x Este es el archivo x $cat error cat:y:No such file or directory $cat x y 1> toto 2>&1 $cat toto Este es el archivo x cat:y:No such file or directory Para cshell: $cat x y >& cachafas $cat cachafas Este es el archivo x cat:y:No such file or directory $(cat x y > result) >& error $cat result Este el archivo x $cat error cat:y:No such file or directory
Dr. Roberto Gmez Diapo. No. 50
Introd. Unix
Existe el archivo? SI < > lee el archivo error archivo >> aadirlo al final error NO error creacin del
del archivo
Diapo. No. 51
Introd. Unix
$ ls -C
prueba $ who rgomez rgomez toto $ console ttyp0 ttyp1 Oct 12 09:09 Oct 12 10:38 Oct 12 11:08 archivo
who
Wed Oct 12 10:44:16 MET 1986 archivo console ttyp0 Oct 12 09:09 Oct 12 10:38
toto
ttyp1
Oct 12 11:08
Diapo. No. 52
Introd. Unix
Pipelines
La salida estndar de un comando puedo ser conectada a la entrada estndar de otro comando
Sintaxis:
commande [ ] [ ] | [ ] [ ] | comando [ ] [ ]
Evita la creacin de archivos temporales Ejemplo: $ cat nombres | grep maquina | more
stdout stderr
cat
grep
more
nombres stdin
Diapo. No. 53
Introd. Unix
Ejecucin en background
Concepto de job en cshell: Cuandp se teclea un comando se le asigna un nmero de job. Para los comandos lentos en su ejecucin resulta interesante poder disponer de la terminal, de tal forma que se pueda ejecutar otros comandos.. Poniendo un " & " despus de la lnea de comando, ste se ejecutar en background, de una forma sincrnica Ejemplo % netscape tareas.html -display walhalla: 0.0 & [1] 712 % 1 712 es el nmero de job identificador del proceso
Nota: la salida estndar de estos comandos, (as como la salida estndar de errores) es la pantalla, salvo si hay una redireccin, (lo cual es aconsejable). Para regresarlo a foreground se usa el comando fg seguido del nmero de job %fg %1 Si se quiere regresar a backgrond %bg
Diapo. No. 54
Introd. Unix
Agrupacin de comandos
Si se agrupan varios comandos entre "( )" o "{ }", estos seran considerados como una sola unidad Esto es interesante para la redireccin de entradas y salidas Ejemplo: Los siguientes comandos:
$ echo El dia de hoy: > log
$ date >> log $ echo las personas siguientes >> log $ who >> log $ echo se encuentran conectadas >> log $
Los comandos agrupados con "{ }" pueden cambiar el ambiente actual, pero no aquellos agrupados con "( )"
Diapo. No. 55
Introd. Unix
Listado de procesos
- ps Cada vez que se est ejecutando un comando o un programa se le asocia un nmero de proceso. El comando ps permite ver los nmeros asociados a los procesos Sintaxis: ps [ [ - ] acCegjklnrSuUvwx ] | [ num ] [ kernel name] Algunas opciones: -a -l informacin de procesos "posedos" por otros informacin en formato largo [ c-dump-file ] [ swap-file ]
-r
-x
Ejemplo: $ps -agx PID TT STAT TIME COMMAND D IW D S S S R 0:07 0:00 0:02 0:05 0:05 0:02 0:00 swapper /sbin/init pagedaemon portmap xclock -digital -geometry +675 +-2 xvile ejecuta.c ps -agx 0 ? 1 ? 2 ? 51 ? 1786 co 2242 p0 2331 p0
2139 p4
IW
0:00
telnet sunlab
Nota: el comando kill nmero-proceso permite "matar", o terminar, con la ejecucin de un proceso
Dr. Roberto Gmez Diapo. No. 56
Introd. Unix
Comando de impresin
- lpr (line printer) Crea un trabajo de impresora en un rea de spooling para una impresin subsecuente (trabajo = archivo de control y de datos) Sintaxis: Opciones: -P dest para elegir la impresora -# n Ejemplo: $ lpr abc $ lpr -Pbali prog1.c results.txt -a2ps Imprime un archivo ASCII en formato postcript Sintaxis: a2ps [ opciones ] Opciones: -P dest para elegir impresora -# n -1 -l -p -n Ejemplo: $ a2ps results.txt para obtener n ejemplares imprime una pgina por hoja imprime en modo landscape imprime en modo portrait despliega el nmero de lnea [ archivos ] para obtener n copias lpr [ opciones ] [ archivos ]
Diapo. No. 57
Introd. Unix
Comandos de impresin
-lpq Permite ver el estado de las colas de espera de impresin Sintaxis: Opciones: -P dest para escoger la impresora -l Ejemplo: $ lpq lp is ready and printing Rank active 1st Owner root toto Job File 201 /etc/passwd 202 abc Total Size 350 bytes 546 bytes formato largo lpq [ opcion ] [ usuario ]
-lprm (line printer remove) Permite suprimir los archivos en espera de ser impresos Sintaxis: Opciones: -Pdest job# Ejemplo: $ lprm 202 dfA202sioux dequeued cfA202sioux dequeued para escoger la cola de espera suprime todos los archivos del usuario borra el archivo que corresponde a ese nmero lprm [ opciones ] [ #job] [usuarios]
Diapo. No. 58
Introd. Unix
- grep
Sirve para encontrar dentro de un conjunto de archivos, todas las lneas que contienen una cadena de caracteres especificada por una expresin regular Sintaxis: Opciones: -v -c -i -n despliega las lneas que no contienen la expresin imprime solo el nmero de lneas que contienen la expresin no hace diferencia entre mayusculas y minusculas despliega el nmero de lnea /etc/passwd grep [ opciones ] expr-reg [ archivos ]
Ejemplos: $ grep gomez $ who | grep ttyp $ who | grep -c '^root' $ grep -vn ' [Dd]ebut ' arch1 arch2 Dentro de la misma familia, se encuentran los comandos siguientes: fgrep egrap no admite las expresiones regulares admite expresiones regulares extendidas
Diapo. No. 59
Introd. Unix
Ejemplos:
$ sort archivo
$ sort arch1 arch2 > ordenado.txt $ sort -n numeros - wc permite contar el nmero de lneas, palabras y caracteres contenidos en los archivos Sintaxis: Opciones: -l -w -c cuenta solo las lneas cuenta solo las palabras cuenta solo los caracteres wc [opciones] [archivos]
Diapo. No. 60
Introd. Unix
- tail
$ tail /etc/passwd
$ cat /etc/passwd | tail -20 $ tail +30 archivo
Sintaxis:
Opciones: -n
Ejemplos: $ head /etc/passwd /etc/group $ cat /etc/passwd | head -20 $ head +30 archivo
Diapo. No. 61
Introd. Unix
Introd. Unix
- uname Despliega informacin acerca del sistema sobre el cual se esta trabajando. Si no se especifica ninguna opcin, imprime el nombre del sistema Sintaxis: Opciones: -m imprime el nombre de la mquina -n -r -s -v -a imprime el nombre del nodo, el cual es utilizado para comunicaciones a travs de una red imprime la referencia de liberacin, ( release sistema operativo imprime el nombre del sistema imprime la versin del sistema operativo imprime toda la informacin anterior ) del uname [ -mnrsva]
Diapo. No. 63
Introd. Unix
Identificacin de la terminal
- tty Regresa el nombre de la terminal del usuario Sintaxis: Opciones: -l imprime terminal -s nmero lnea asincrnico a del usuario esta conectado la cual la tty [ -l ] [ -s] ...
$tty /dev/ttyp0 $
$tty /dev/ttyp2 $
Diapo. No. 64
Introd. Unix
En UNIX el acceso a los archivos y directorios se diferencia en funcin de tres categoras de usuarios: 1. Propietario El propietario del archivo En principio se refiere al que cre el archivo
Diapo. No. 65
Introd. Unix
w x
o
r w x
0 0 0 o 1 1 1 grupo
r w x
0 0 0 o 1 1 1 otros
r
w x
autorizacin de lectura
autorizacin de escritura autorizacin de ejecucin
+ Para los directorios r w autorizacin de leer el directorio ( ls ) autorizacin de escribir en el directorio (creacin, modificacin o supresin de archivos) x autorizacin de se posicionar en el directorio ( cd )
+ Por default cuando se crea un directorio se le asignan las autorizaciones siguientes r w x r w x r w x (o sea 777 en octal) + En el caso de los archivos: rw-rw-rwDr. Roberto Gmez
Introd. Unix
El comando chmod permite modificar las autorizaciones de acceso de los archivos y de los directorios ya creados Sintaxis: chmod nuevo-modo [ archivos ] [ directorios ]
Existen dos formas de especificar el nuevo modo: + en octal: + en modo simbolico: u g o a permisos del usuario permisos del grupo permisos de los otros todos los permisos chmod ooo archivo chmod [ ugoa ] [+ = -] [ rwx ]
Diapo. No. 67
Introd. Unix
Ejemplo de chmod
-rwxr-xr-x 1
$ chmod a-x e1 $ ls -lg e1 -rw-r--r-$ chmod o-r e1 $ ls -lg e1 -rw-r-x--1 1
toto
daemon
0 Oct 12 18:20 e1
toto
daemon
0 Oct 12 18:20 e1
$ chmod g+x e1
toto
daemon
0 Oct 12 18:20 e1
Diapo. No. 68
Introd. Unix
Los scripts
Cuando se tiene que ejecutar muy seguido un conjunto de comandos, resulta interesante el hecho de poder agruparlos dentro de un archivo de comandos (un script). Es necesario que esl archivo tenga los permisos necesarios para ser ejecutado, (comando chmod) Para ejecutar los comandos almacenados en este archivo, basta con teclear el nombre del archivo en la lnea de comandos, como si este archivo fuera el nombre de un comando estndar de UNIX Ejemplo creacin y uso scripts: $more toto date pwd whoami $toto toto: Permission denied $ls -lg toto - r w - r - - r - - jvazquez $chmod u+x $ls -l toto - r w x r - - r - - jvazquez $toto Mon Sep 2 19:13:56 CUT 1998 /home/usr/dia/jvazquez jvazquez $
Dr. Roberto Gmez Diapo. No. 69
dic 16
16
Introd. Unix
Ejemplo de scripts
$cat ifl echo palabra1: read word1 echo palabra2: read word2 if test $word1 = $word2 then echo Concuerdan fi echo Fin del programa $ifl palabra1: dodo palabra2: dodo Concuerdan Fin del programa $ifl palabra1: dodo palabra2: fifi Fin del programa $
Diapo. No. 70
Introd. Unix
history
Exclusivo de cshell Su objetivo es de simplificar la repeticin de comandos por substitucin La variable history - El C-Shell memoriza los comandos anteriores. El nmero mximo de comandos memorizados es determinado por la variable history. El comando history - Permite visualizar la lista de los ltimos comandos. - Ejemplo: $ history
1 pwd
2 ls -al 3 ed ch16 4 history $ Repeticin de una instruccin anterior
- Basta con teclear " ! " y el nmero de instruccin desplegado por el comando anterior.
- En algunos Shells, se puede teclear "!" y los primeros caracteres del comando que se desee reejecutar - Ejemplo, (tomando en cuenta el anterior) $ ! pwd pwd $ ! ed ed ch 16 $
Dr. Roberto Gmez Diapo. No. 71
Introd. Unix
Con las versiones BSD4.x de Unix el acceso a una red local es posible.
El objetivo es que el usuario pueda accesar una mquina, a partir de otra donde ya se esta conectado, con el fin de transferir datos a una gran velocidad
+ Transferir archivos + Tener una terminal virtual + Ejecucin, sobre una mquina, de programas a distancia
Diapo. No. 72
Introd. Unix
telnet
Permite conectarse a otro sistema, (no necesariamente Unix ), y de dialogar con ese sistema como si tuviramos una terminal conectada directamente a l. Sintaxis: telnet [ host ]
Modo comandos en telnet Una vez conectados, y despus de teclear la opcin <crtl> <]>, se pasa al modo comandos de telnet. Este modo permite enviar caracteres especiales al sistema distante, de cerrar la conexin, de abrir una nueva, o de salirse de telnet Los principales comandos son: ? open close quit send car send ? lista los comandos de telnet abre una conexin cierra la conexin en curso sale de telnet, cerrando la conexin enva un carcter especial al sitio distante lista los cracteres especiales y su efecto
Diapo. No. 73
Introd. Unix
Los principales comandos de ftp son: ? ! bye lista los comandos de ftp lanza un shell sobre el sistema local termina la sesin ftp
cd direc cambiar directorio en sistema distante lcd direc cambiar de directorio en sistema local put [arch1 [arch2] ] enva el archivo arch1, que se llamar arch2 en el sistema distante. Un sinnimo de put es send
Introd. Unix
Diapo. No. 75
Introd. Unix
Los comandos r
Usuario U necesita ejecucin de un comando en host B desde el host A.
No
Est A en el archivo /etc/hosts.equiv del host B? No No comando no permitido Si Est A en el arcivo .rhosts en el directorio hogar del host B?
comando permitido
Diapo. No. 76
Introd. Unix
Sintaxis:
Si no se utiliza -l , rlogin conectar al usuario a la mquina distante con el mismo nombre que tiene en la mquina local
Los valores de las variables de ambiente USER y TERM son pasadas al programa "login' de la computadora distante.
Peticiones de rlogin Son precedidas del caracter " ~ ",(tilde), y no son efectivas que como primer caracter de una lnea, (despus de un <RET>)
~. ~<crl><z> ~~
Diapo. No. 77
Introd. Unix
Si no se especifica el comando, entonces el usuario se conectar al sistema distante como si hubiera tecleado un rlogin
Hay que tener cuidado con las redirecciones: $ rsh amenti ls > res.txt crea un archivo res.txt local
$ rsh amenti "ls > res.txt" crea un archvio en la mquina amenti Si el usuario no tiene el archivo .rhosts entonces se le pedir su password Lo mismo ocurre si en ese archivo no se le otorga la autorizacin de conexin a la mquina desde la cual se est ejecutando el rsh
Diapo. No. 78
Introd. Unix
Diapo. No. 79
Introd. Unix
Otros comandos
Diapo. No. 80