Curso Basico de UNIX

download Curso Basico de UNIX

of 128

description

Introducción a los comandos basico, sobre el shell de unix, con algunos ejemplos

Transcript of Curso Basico de UNIX

Curso Bsico de UNIX(Ultima revisin: Mayo 2002) Sistemas Operativos Introduccin a UNIX Tutorial ejercicios ejercicios complementarios GNU info Introduccin al Shell ejercicios ejercicios complementarios UNIX y C Sistema de archivos ejercicios Manejo de archivos ejercicios ejercicios complementarios Editor vi ejercicios Expresiones regulares ejercicios Filtros ejercicios Programacin del Shell problemas soluciones Resea de comandos bsicos Resea de comandos de filtro Bibliografa

Conceptos de Sistemas Operativos Hardware Qu es un Sistema Operativo Historia de los Sistemas Operativos Conceptos de Sistemas Operativos Procesos Archivos Llamadas al Sistema El intrprete de comandos ("shell") Ejemplos de comandos Referencias

Una computadora sin software no presta ninguna utilidad. El software puede clasificarse en dos grandes grupos: programas de sistema (software de base, software de sistema): controlan la operacin de la computadora. programas de aplicacin (software de aplicacin): resuelven problemas para los usuarios. El Sistema Operativo es el programa fundamental entre los programas de sistemas; controla todos los recursos de la computadora y proporciona la base sobre la que pueden escribirse los programas de aplicacin. Es un nivel de software por encima del hardware que controla todas las partes del sistema y presenta al usuario una interfaz o mquina virtual. En un sistema de computacin se reconocen los siguientes niveles, yendo desde el usuario hacia la mquina fsica: Programas de aplicacin: Sistema bancario, Reservaciones areas, Juegos. Compiladores, Editores, Intrprete de comandos. Sistema operativo. Hardware: Lenguaje de mquina: instrucciones directas a la mquina. Tiene de 50 a 300 instrucciones y es muy difcil de programar. Microprogramacin: control directo de dispositivos. En memoria de slo lectura, o a veces en el propio hardware; interpreta el lenguaje de mquina. Dispositivos fsicos: chips, barras, cables, fuentes de potencia, conectores, etc. El sistema operativo ejecuta en modo superusuario, con plenos poderes; no puede ser alterado por el usuario. Los compiladores y editores se ejecutan en modo usuario, con poderes limitados. Cada usuario podra escribir su propio editor, compilador u otro utilitario. Los programas de aplicacin son escritos por los usuarios para resolver problemas particulares.

Qu es un sistema operativo. Como mquina extendida. El sistema operativo presenta al usuario una mquina extendida o mquina virtual ms fcil de programar que accionar en forma directa sobre el hardware subyacente. En este sentido se dice que el sistema operativo "define un ambiente de trabajo". Como controlador de recursos. Permite la asignacin ordenada de procesadores, memoria y dispositivos de entrada/salida para los varios programas que compiten por el uso de estos recursos. Historia de los Sistemas Operativos. Primera generacin (1945-1955): bulbos y conexiones. Programacin en lenguaje de mquina absoluto, o realizando directamente las conexiones elctricas. Alrededor de 1950 se introducen las tarjetas perforadas. Segunda generacin (1955-1965): transistores y sistemas de procesamiento por lotes. Los programas y datos se entregaban en tarjetas, se acumulaban y luego eran procesados todos juntos por la mquina, buscando minimizar los tiempos muertos. Tercera generacin (1965-1980): circuitos integrados y multiprogramacin. El sistema 360 de IBM unifica computadoras comerciales y cientficas en una sola lnea de mquinas con software compatible. Se introduce la multiprogramacin, que divide la memoria en partes y ejecuta un programa distinto en cada una. El spooling permite la operacin simultnea y en lnea de perifricos. El tiempo compartido es una variante de multiprogramacin que habilita a cada usuario una terminal en lnea. MULTICS, un gigantesco sistema operativo, fracasa en su construccin pero aporta muchas ideas que hacen surgir UNIX. Cuarta generacin (1980-1990): estaciones de trabajo y computadoras personales. Sistemas operativos DOS y UNIX. Software "amigable con el usuario". Sistemas operativos de red, con varias computadoras interconectadas que pueden ser accedidas por un mismo usuario. Sistemas operativos distribudos, compuestos por varios procesadores que se presentan al usuario como un sistema nico. Conceptos de Sistemas Operativos. La interfaz entre los programas de usuario y el sistema operativo est formada por llamadas al sistema capaces de crear, utilizar y eliminar procesos y archivos. Procesos. Un proceso es bsicamente un programa en ejecucin. Consta del programa ejecutable, datos, pilas, registros y toda la informacin necesaria para ejecutar. Un intrprete de comandos (shell) es un proceso que lee los comandos de usuario desde una terminal y crea procesos hijo para ejecutar ese comando. Se crea as un rbol de procesos en ejecucin. Los procesos se manejan mediante seales que los obligan a suspender, reiniciar o terminar su accin. Las seales se utilizan tambin para comunicacin entre procesos. Cada usuario tiene asignado un identificador de usuario (uid), y grupos de usuarios tienen un identificador de grupo (gid). Un proceso tiene asignado el uid y gid del usuario que lo inici. Ambos identificadores se utilizan para proteger la informacin manejada por el proceso. Archivos.

Existen llamadas al sistema para crear, eliminar, leer y escribir archivos. Los archivos se agrupan en directorios, y existen llamadas al sistema para crear y eliminar directorios, y para colocar y quitar archivos de ellos. Esto crea una jerarqua de directorios y archivos llamada sistema de archivos. Un archivo se reconoce unvocamente dando la ruta de acceso, que es la sucesin de directorios que permiten alcanzar el archivo a partir del directorio raz. Cada proceso activo tiene un directorio de trabajo en el que se buscan primariamente los archivos cuando se indica slo el nombre y no la ruta de acceso. En un sistema multiusuario, es preciso dar privacidad a los archivos de cada persona. UNIX utiliza un cdigo de 9 bits en 3 grupos de 3 bits. Estos grupos correspondientes al dueo, el grupo y el resto del mundo. Cada conjunto de 3 bits corresponde a permiso de lectura, escritura y ejecucin. Se presentan como rwx (Read, Write, eXecute); cuando uno de estos permisos est denegado se sustituye la letra por -, como en r-- o en rw-. Para acceder a un archivo, se verifican primero sus permisos; si son correctos, el sistema devuelve un descriptor de archivo o "entrada de manejo", un nmero entero que se utiliza en todas las operaciones subsiguientes. Al cerrarse el archivo, el descriptor es desasignado y el nmero entero queda disponible para otro acceso. UNIX maneja los dispositivos de entrada y salida con un artificio que los presenta como archivos especiales, lo que permite escribir y leer en ellos con las mismas llamadas al sistema que se usan para los archivos. Los archivos especiales de bloque se usan para dispositivos que organizan los datos en bloques de tamao fijo y acceso aleatorio, como los discos. Los archivos especiales de caracteres modelan los dispositivos formados con flujos de caracteres como las terminales, impresoras e interfaces de red. En UNIX y DOS, al iniciar un proceso se establece el descriptor de archivo 0 como entrada estndar para recibir datos desde el teclado y el descriptor de archivo 1 como salida estndar para presentar informacin en la pantalla. El descriptor de archivo 2 es el de error estndar; se usa para mensajes de error y se asigna normalmente a la pantalla. La interconexin de procesos se realiza a travs de una tubera, entubamiento, tubo o secuencia de comandos, indicado por el caracter | (barra vertical). Un tubo es un seudoarchivo en el cual un primer proceso escribe su salida para ser leda por un segundo proceso; la salida del primero es la entrada del segundo. Llamadas al sistema. Los programas de usuario se comunican con el sistema operativo mediante llamadas al sistema. Para cada llamada existe un procedimiento de biblioteca que puede ser invocado desde un programa de usuario mediante un nombre y parmetros. El intrprete de comandos (shell). El intrprete de comandos de UNIX, o shell, es un proceso que muestra un indicador de comandos ($, %, o #) y aguarda que el usuario digite un comando. Toda vez que el usuario digita un comando, el intrprete lo valida, y si es correcto crea un proceso hijo que realiza la accin encomendada. Al terminar el proceso hijo, exhibe nuevamente el indicador de comando e intenta leer una nueva lnea de la entrada. Ejemplos de comandos (UNIX): date imprime la fecha. date >archivo1

imprime la fecha pero la redirecciona hacia el archivo1. sort archivo2 lee archivo1, reordena sus lneas y las graba en archivo2. cat arch1 arch2 arch3 | sort >/dev/lp concatena los archivos arch1, arch2 y arch3, dirige su salida hacia el comando sort que ordena las lneas de los tres archivos juntos y las enva al dispositivo de impresin / dev/lp.

Introduccin a UNIX Qu es UNIX Caractersticas Historia de UNIX Antecedentes UNIX Versiones actuales de UNIX Objetivos de UNIX Filosofa del sistema UNIX El UNIX moderno Referencias

Qu es UNIX. Esctrictamente, UNIX designa el ncleo de un sistema operativo multiusuario y multitarea. En un sentido ms amplio, comprende el ncleo del sistema operativo ms un conjunto de programas que permiten compilar lenguajes de programacin, editar texto, interpretar comandos, manejar archivos y discos, acceder a otras mquinas, establecer comunicaciones telefnicas, enviar y recibir correo electrnico, manejar las colas de impresin y un sinfn de tareas ms. Algunos de estos programas pueden haber sido desarrollados por los propios usuarios. UNIX designa al mismo tiempo un cierto "ambiente de trabajo", un conjunto de circunstancias que encuentra el usuario de la computadora donde corre UNIX, tales como la presentacin en pantalla, los programas disponibles y la forma de trabajo que impone o permite. Cuando hablemos de UNIX nos estaremos refiriendo al sentido amplio y, conjuntamente, a su ambiente de trabajo. Caractersticas: muchas herramientas de software (compiladores, editores, utilitarios para muchas tareas). reutiliza el software, a travs de la combinacin de comandos simples en aplicaciones complejas. portable: el mismo sistema operativo corre en un espectro de mquinas que van desde notebooks a supercomputadoras. Es el nico sistema operativo con estas caractersticas. flexible: se adapta a muchas aplicaciones diferentes. potente: dispone de muchos comandos y servicios ya incorporados. multiusuario: atiende a muchas personas simultneamente. multitarea: hace muchas cosas a la vez. elegante: sus comandos son breves, coherentes, especficos para cada tarea y muy eficientes. orientado a redes desde el comienzo.

dispone de un estndar (POSIX) que debe cumplir todo sistema operativo que pretenda ser UNIX, lo que asegura una evolucin predecible.

Historia de UNIX Antecedentes: las computadoras ejecutan un trabajo por vez (aos '40 y '50). los trabajos se agrupan y ejecutan "por lotes" (aos '60). CTSS, un sistema operativo de propsito general y tiempo compartido, logra enorme xito. MULTICS, un ambicioso proyecto de sistema operativo para cientos de usuarios fracasa y no llega a terminarse. UNIX. Ken Thomson, desarrollador de MULTICS, con ideas y apoyo de algunos compaeros, escribe un nuevo MULTICS ms modesto en una mquina PDP-7 desechada (1969). Brian Kernighan, compaero de Thomson, lo llama irnicamente UNICS. UNIX pasa a una mquina PDP-11 (1970). Ritchie dise y escribi un compilador para lenguaje C. Thomson y Ritchie reescriben UNIX en C, rompiendo la tradicin de sistemas operativos escritos en lenguaje ensamblador (1973). Esto aumenta la portabilidad del sistema hacia otras mquinas. Thomson y Ritchie reciben el premio Turing por un memorable artculo sobre UNIX escrito en 1974. UNIX es adoptado en las universidades, por tratarse de un "sistema abierto" que proporciona todo el cdigo fuente (1974). BSD y System V; el estndar de POSIX. El desmembramiento de AT&T (1984) permite a esta empresa ingresar en el mercado de computadoras, y produce la primera versin comercial de UNIX, el Sistema III, que pronto es sustitudo por el Sistema V versiones 2, 3 y 4. La Universidad de Berkeley produjo una versin mejorada para la PDP-11, llamada 1BSD; luego fueron la 3BSD y luego 4BSD, que incorpor el protocolo de redes TCP/IP. El grupo POSIX estudi y propuso un estndar para UNIX, llamado 1003.1, que define un conjunto de procedimientos de biblioteca que cualquier sistema conforme con UNIX debe proporcionar. Esto resolvi la controversia entre Sistema V y BSD. Se forma OSF, Open Software Foundation, integrada por IBM, DEC, HP y otros para enfrentar a AT&T. Crea un UNIX con ms prestaciones que el estndar de POSIX. Versiones actuales de UNIX. AT&T, para enfrentar a OSF, crea UI, UNIX International, junto con otras empresas; crea otro UNIX ampliado de POSIX. IBM crea su propia variante de UNIX, llamada AIX. La confusin de versiones contina. surgen las versiones UNIX de dominio pblico FreeBSD y Linux, que se distribuyen sin costo. Linux es desarrollado por una multitud de personas y equipos de trabajo a travs de Internet. FreeBSD es desarrollado por un grupo de trabajo cerrado.

UNIX hacia el usuario final: distribuciones fciles de instalar (SuSE, Redhat, Mandrake, Corel), aplicaciones de escritorio (Applixware, StarOffice), programas asistentes de administracin para estaciones de trabajo o servidores.

Objetivos de UNIX. UNIX fue diseado teniendo en mente los siguientes objetivos: crear un sistema interactivo de tiempo compartido diseado por programadores y para programadores, destinado a usuarios calificados. que fuera sencillo, elegante, escueto y consistente. que permitiera resolver problemas complejos combinando un nmero reducido de comandos bsicos. Filosofa del sistema UNIX. Los objetivos con que se cre determinaron una "filosofa" de UNIX caracterizada por: comandos cortos, simples, especficos y muy eficientes, que "hacen una sola cosa pero la hacen muy bien". entrada y salida estandarizadas que permiten la interconexin de comandos. Esto se llama entubamiento ("pipelining"): la salida de un comando es tomada por el siguiente como entrada. El UNIX moderno. Orientado en primera instancia a terminales de caracteres, actualmente dispone de la interface grfica X-Windows. Esto ha simplificado mucho el uso para los no especialistas. Es ideal para trabajar como servidor: una mquina potente como servidor, terminales o computadores personales baratas en los puestos de trabajo. El paquete de libre uso Samba permite que una mquina UNIX acte como servidor de puestos de trabajo Windows 3.11, Windows 95, y Windows NT. Se orienta en la direccin contraria a la tendencia de hacer invisible al usuario el sistema operativo, permitiendo el uso de todas las bibliotecas, llamadas al sistema y herramientas internas, aunque su uso requiere un alto nivel de especializacin. Es posible compilar un ncleo especficamente adaptado a las necesidades particulares de una empresa o grupo de trabajo, reduciendo el uso de recursos y aumentando la rapidez. Las mquinas RISC de los '80 y '90 adoptaron UNIX como sistema operativo; es por lejos el sistema predominante en las estaciones de trabajo orientadas a clculos e investigacin. Tambin fue adoptado para la creacin de Internet, mayoritariamente soportada por UNIX. Por sus caractersticas de diseo, est especialmente preparado para su ampliacin y desarrollo en 64 bits y el multiprocesamiento en varias CPUs. Referencias: Kernighan-Pike[1987], Coffin[1989], Tanenbaum[1992]

TutorialEmulador de Terminal Ingreso al sistema (login) Directorios Listado de archivos Manual de UNIX Contenido de un archivo Crear y borrar un archivo Correo electrnico de UNIX Usuarios en el sistema Talk Cambio de contrasea Fin de Sesin Otros Bibliografa y Referencias

Emulador de Terminal. Para ingresar a un sistema UNIX remoto desde un PC se usa habitualmente un "emulador de terminal". Este programa permite al PC comportarse como una terminal (teclado y pantalla, sin procesador) conectada directamente a la mquina UNIX. En el emulador de terminal se deben fijar los siguientes parmetros: Nombre descriptivo de la conexin a establecer (arbitrario). Nombre en la red de la mquina a la que se quiere conectar. Tipo de terminal que se emular (VT100 es el ms conocido). Conexin va TCP/IP, protocolo de comunicacin en la red. Ingreso al sistema (login). login: id-usuario password: id-usuario es el nombre identificador del usuario para ingreso al sistema, proceso que se denomina "login". Este nombre de usuario suele tener hasta 8 caracteres (letras, nmeros y algunos smbolos), debe comenzar con minscula. UNIX distingue entre maysculas y minsculas. En el ingreso al sistema, no se permiten correcciones. se despliega siempre despus del login, es puesto por el administrador del sistema para informacin o bienvenida. aviso de noticias nuevas. Las noticias se usan para informaciones generales de mayor tiempo de validez. Las noticias no aparecen ms despus de haber sido ledas. Para leer las noticias debe digitarse el comando news. You have mail

indica que hay mensajes de otros usuarios, o del sistema. El correo electrnico permite a cualquier usuario enviar y recibir mensajes. $ es el indicador de comandos del sistema; indica que el sistema est listo y aguarda una orden del operador, que debe ser escrita a continuacin de $ y finalizada con la tecla . En los siguientes ejemplos debe escribirse el comando tal cual se muestra, digitando la tecla al final. date comando que muestra la fecha y hora. who muestra los nombres de usuarios conectados al sistema en este momento. hostname muestra el nombre de la mquina UNIX. Directorios. Cada usuario tiene un directorio propio, llamado a veces "directorio home". Cuando el usuario ingresa al sistema ya est ubicado en su directorio propio. El comando pwd muestra el directorio actual. cd /home cambia hacia el directorio /home, lo que puede verificarse con el comando pwd. cd sin parmetros devuelve al usuario a su directorio propio, desde cualquier lugar donde est. Este comando es til cuando se han hecho varios cambios de directorio y se quiere retornar a una situacin conocida, ubicndose en el directorio propio. Listado de archivos. Ensayemos el comando ls: ls lista archivos del directorio actual. ls -l /bin lista archivos en el directorio /bin; aqu se encuentran los archivos de comandos ejecutables del sistema. No cambia de directorio; el directorio actual sigue siendo el mismo. ls -l lista archivos en formato largo, dando detalles. El -l se llama opcin o bandera; se lee "menos ele". La salida obtenida consta de renglones parecidos a -rw-rw-rw- 1 esteban users 138 Apr 5 19:34 leame y se interpretan as:

indica el tipo de archivo de que se trata, con esta convencin: - archivo comn, d directorio, l enlace o referencia a otro archivo. rw-rw-rw son los permisos del archivo; r (read) permiso para leer el archivo w (write) permiso para modificar o eliminar el archivo x (execute) si se trata de un archivo, permiso para ejecutarlo como programa; si se trata de un directorio, permiso para ingresar en l y recorrerlo. Los tres grupos de 3 caracteres indican permisos para el dueo del archivo (esteban), su grupo (users) y el resto del mundo. 1 cantidad de enlaces, referencias a este archivo desde otros archivos ubicados en diferentes lugares. esteban nombre del usuario dueo del archivo. users nombre del grupo al que pertenece el archivo 138 tamao en bytes del archivo. Si se trata de un directorio, este nmero es de control del sistema, sin interpretacin inmediata para el usuario. Apr 5 19:34 fecha y hora de ltima modificacin. Si no aparece el ao, se asume el ao corriente. leame nombre del archivo. Notar que el nombre del archivo est siempre al final. ls -a muestra tambin archivos ocultos, normalmente no visibles en el listado. Los archivos cuyo nombre empieza con un punto son ocultos, en este sentido. Las entradas . y .. representan el directorio actual y el directorio padre, respectivamente. ls -la formato largo y archivos ocultos. ls -la /var listado de archivos visibles y ocultos en formato largo del directorio /var.

Manual de UNIX. UNIX dispone de un manual en lnea o "pginas man" con informacin sobre comandos, archivos y otros elementos del sistema operativo. Aunque muy tcnicas y a veces difciles de comprender, son una referencia obligada para operar con solvencia. man ls muestra la pgina man del comando ls, paginada para poder leer una pantalla por vez. Para salir antes de terminar, digitar 'q'. man man muestra la pgina man del propio comando man. man man > man.txt redirecciona la salida y graba el contenido de la pgina man en el archivo man.txt, lo que se puede verificar con ls. Contenido de un archivo. cat man.txt muestra el contenido del archivo. El archivo man.txt, por provenir de una pgina man, contiene muchos caracteres de control para regular su despliegue en pantalla. El comando cat no intrepreta estos caracteres de control. El comando cat permite tambin concatenar archivos, segn se ver. head man.txt muestra las primeras 10 lneas de un archivo. tail man.txt muestra las 10 lneas finales de un archivo. cat man.txt | more lee una nota larga paginando; la salida de cat es tomada por more, que presenta la informacin pgina por pgina. Para interrumpir el paginado de more, digitar 'q'. La tecla espaciadora avanza una pantalla, la combinacin de teclas Ctrl-B retrocede una pantalla. more man.txt presenta la informacin de man.txt ya paginada. ls -l /etc | more muestra el extenso contenido del directorio /etc paginando la salida. Crear y borrar un archivo. touch nota.vacia crea el archivo nota.vacia, sin contenido alguno. ls -l nota.vacia muestra datos del archivo creado. cat nota.vacia no muestra nada, el archivo est vaco. touch .archivo_oculto crea un archivo vaco y oculto. ls

no muestra el archivo oculto creado, pero ls -a s lo muestra. ls -la muestra datos en formato largo del archivo oculto. rm nota.vacia borra el archivo nota.vacia. Como muchos comandos de UNIX, su nombre deriva de palabras inglesas: rm proviene de "remove", eliminar o borrar. rm -i man.txt borrado interactivo, pide confirmacin antes de actuar. rm .archivo_oculto ls -la borra el archivo oculto y verifica listando los archivos del directorio. echo Mensaje en pantalla muestra en la pantalla la leyenda indicada. echo Este es el archivo mensaje1 > mensaje1 direcciona la salida del comando echo y graba la leyenda en el archivo mensaje1. ls -l mensaje1 cat mensaje1 muestra datos del archivo y verifica su contenido. echo Esta lnea es agregada >> mensaje1 echo Esta es otra lnea agregada >> mensaje1 cat mensaje1 redirecciona la salida de echo para agregar dos lneas ms al archivo ya existente mensaje1. Verifica el contenido con cat. Correo electrnico de UNIX. Para leer el correo, digitar mail Este comando ingresa al usuario en el sistema de correo electrnico de UNIX. Revisa la casilla de entrada de mensajes mostrando la lista de recibidos. De ahora en adelante, slo se aceptan los comandos propios de mail. El indicador de comandos de mail es & Comandos disponibles dentro del sistema de correo: d borra mensaje corriente, marcado con '>' ? muestra lista de comandos para manejo de mensajes 5 muestra el mensaje 5 h muestra la lista de mensajes h 3 muestra la lista de mensajes comenzando en el 3 q sale del programa de correo

Para enviar un correo al usuario juan, desde la lnea de comando de UNIX digitar mail juan Escribir entonces el texto del mensaje. Antes de llegar al fin de la pantalla, digitar para que cambie al otro rengln. El comando mail no es un editor: no arregla las lneas ni permite corregir lneas anteriores. Al finalizar de escribir el mensaje, digitar . (un punto solo en una lnea) y dar . Un punto solo en la lnea termina el mensaje y devuelve al usuario a la lnea de comandos de UNIX. El usuario puede probar el correo envindose un mensaje a s mismo y luego leyndolo. mail juan esteban enva mensaje al usuario juan y al usuario esteban. mail -s "Mensaje de prueba" juan enva un mensaje de prueba al usuario juan con el ttulo "Mensaje de prueba". Es de cortesa indicar siempre el tema del mensaje, para que el destinatario sepa inmediatamente de qu se trata. Existen en UNIX muchos programas para manejo de correo, ms potentes y sofisticados; aqu nos limitamos a mail como ejemplo de un comando de UNIX ms bien artesanal, pero siempre presente y til para mensajera sencilla. Usuarios en el sistema. who muestra los usuarios que estn actualmente en el sistema. Indica identificador de usuario, terminal en que est conectado, fecha y hora de ingreso al sistema. who am i da informacin sobre el usuario que est trabajando, indicando su mquina y nombre de usuario, terminal, fecha y hora. whoami presenta slo el nombre del usuario que est operando. id proporciona la identificacin del usuario invocante, dando el nombre de usuario y su nmero (UID), nombre de grupo primario y su nmero (GID), nombres de otros grupos a los cuales pertenece (si los hay) y sus nmeros. id jperez proporciona datos de identificacin del usuario indicado (jperez). finger proporciona nombre del usuario en el sistema, nombre en la vida real y otros datos del usuario invocante, indicando si est en este momento en el sistema, y si tiene correo por leer. finger jperez proporciona informacin sobre el usuario indicado.

Talk. Talk es un programa que permite a dos usuarios en el sistema comunicarse escribiendo en el teclado. Al invocar talk la pantalla se divide en dos partes, cada una correspondiente a uno de los usuarios. Ambos pueden escribir simultneamente, y ambos ven la salida en su parte correspondiente de la pantalla. talk usuario1 solicita apertura de una sesin de talk al usuario1, que debe responder con otro comando similar cuando recibe el pedido. Para terminar la sesin de talk, cualquiera de los usuarios puede digitar Ctrl-C. El comando mesg permite regular si se desea recibir mensajes o no. Para evitar recibir mensajes de talk es posible bloquear a otros usuarios el acceso a la terminal donde uno est trabajando; quienes intenten iniciar una sesin recibirn un mensaje indicando que la terminal destino no est habilitada para recibir mensajes. mesg n deshabilita recepcin de mensajes, mesg y habilita recepcin de mensajes. mesg muestra el estado: si responde "y" est habilitada la recepcin, si responde "n" se rechazan los pedidos de conexin. Cambio de contrasea. passwd pide la vieja contrasea y luego la nueva; la nueva contrasea deber ingresarse dos veces, para evitar posibles errores de digitacin. En sistemas con servicio de informacin de red (NIS), el comando es yppasswd El administrador del sistema indicar cul de estos comandos debe usar. Fin de sesin. exit termina la sesin con UNIX, vuelve a presentar el mensaje inicial login: habilitando a un nuevo usuario a ingresar al sistema. Las teclas tambin terminan la sesin. Otros. Las teclas Ctrl-C interrumpen la ejecucin de un comando. Las teclas Ctrl-D indican un fin de ingreso; si se dan en el indicador de comandos, termina la sesin UNIX. En UNIX no hay un caracter reservado para fin de archivo; Ctrl-D simplemente indica la terminacin de un flujo de datos. En UNIX, la tecla coloca un caracter nueva lnea, que en ASCII es ; con la tecla DOS o MS-Windows colocan dos caracteres al final de una lnea: un nueva lnea y un retorno . Al mirar un archivo creado en DOS o

MS-Windows con algunos programas UNIX se pueden llegar a ver caracteres '^M' al final por esta razn. Algunas terminales adminten un control instantneo de la salida, con las teclas detiene despliegue. contina despliegue. En las mquinas UNIX, el terminal de la propia mquina UNIX se denomina "consola"; se usa preferentemente para administracin del sistema. Todas las teclas de control funcionan bien en la consola; el funcionamiento en los emuladores de terminal depende de la construccin del programa de emulacin. Preguntas y Ejercicios. Ejercicios Complementarios

Bibliografa y Referencias. Comandos: apropos cat cd date exit echo finger head hostname id info less ls mail man mesg more passwd pwd rm talk tail touch whatis who who am i whoami Referencias: Kernighan-Pike[1987], Coffin[1989]

Preguntas y Ejercicios. Ficha referencia: TutorialLos ejercicios propuestos referencian comandos vistos en esta ficha y anteriores. No obstante, algunas de las tareas pedidas exigen conocer opciones no mencionadas. Las mismas pueden encontrarse en la "Resea de Comandos". 1. LISTADO DE ARCHIVOS (terico). Estudiar el formato largo de salida del comando ls. Interpretar las siguientes lneas de salida: drwxr-xr-x 5 pedroso prod 512 Sep 11 15:09 articulos -rw-r--r-- 1 pedroso prod 1430 Ago 10 07:56 docum1.prod -rwxr-xr-x 3 admin1 adminfo 2330 Jan 7 09:34 rv lrwxr--r-- 1 nicasio almacen 9500 Sep 11 10:56 listado.partes 2. LISTADO DE ARCHIVOS. Estudiar el comando ls. a) Listar recursivamente todos los archivos bajo el directorio /etc deteniendo el despliegue en cada pantalla. b) Probar otras opciones del comando ls usando el directorio /etc o /bin. c) Listar archivos visibles e invisibles bajo el directorio corriente, en formato largo. 3. REDIRECCION E/S. a) Crear el archivo cap1 con el contenido "Este es el captulo 1". Repetir con cap2 y cap3. Verificar mostrando cada uno con cat. b) Mostrar en pantalla uno tras otro, de una sola vez, los archivos cap1, cap2 y cap3 creados. c) Grabar en un nico archivo, llamado libro, los archivos cap1, cap2 y cap3. 4. EDITOR ae. El editor por excelencia de UNIX es vi, presente en todas las variedades de UNIX, usado preferentemente para administracin del sistema. La distribucin Linux Debian/GNU contiene un editor sencillo y pequeo llamado ae. Invocarlo escribiendo ae. Interpretar la ayuda y experimentar con l creando y modificando textos breves. 5. SISTEMA DE ARCHIVOS. a) Trasladarse al directorio doc, debajo del directorio usr, debajo del directorio raz. Mostrar el directorio actual. b) Trasladarse al directorio local, debajo del directorio usr, debajo del directorio raz. Mostrar el directorio actual; mostrar los archivos contenidos en l. c) Trasladarse al directorio propio del usuario desde cualquier otro directorio. 6. USUARIOS. a) Mostrar informacin relativa al usuario en la sesin actual. b) Mostrar qu usuarios hay en el sistema en el momento actual. c) Mostrar el nombre de la mquina.

7. MANUAL. a) Desplegar en pantalla la pgina del manual para el comando que muestra en pantalla las pginas del manual. b) Guardar en el archivo pwd.man del directorio actual, la pgina del manual pwd. c) Mostrar el archivo pwd.man con el comandos more; luego visualizarlo con ae. Puede explicar las diferencias? 8. FILTROS. a) Grabar la salida de la pgina man del comando echo en el archivo echo.man. Verificar mostrando echo.man con more. b) Mostrar las 15 primeras lneas del archivo echo.man. Mostrar las ltimas 20 lneas del archivo echo.man. c) Capturar las 15 primeras lneas del archivo echo.man en el archivo extracto.echo.man. d) Agregar al archivo extracto.echo.man las ltimas 20 lneas del archivo echo.man. 9. MAIL (terico). Estudiar el comando mail. Asegurarse de ser capaz de invocar el programa de correo para leer mensajes recibidos, y luego emitir comandos internos del programa de correo para - mostrar la lista de mensajes recibidos; - mostrar la lista de mensajes recibidos comenzando en el 21; - leer el mensaje 5; - borrar los mensajes 5, 7, 9 al 23; - salir del correo actualizando la casilla. 10. MAIL. a) Envese usted mismo un mensaje de correo con el ttulo "Mensaje 1" y el siguiente contenido: Este es el mensaje 1. Va dirigido a m mismo. Saludos, Yo. Repita con textos similares para los mensajes de ttulo "Mensaje 2" y "Mensaje 3". b) Lea el primero, y slo el primero, de todos estos mensajes con el comando mail, y salga de mail. Vuelva a digitar mail. Cuntos mensajes tiene? Cules han quedado? Confirme leyendo el mensaje 2, y slo ste. c) Digite ahora el comando mail -f mbox Cul es su contenido? Para qu servir el archivo mbox? d) Pruebe borrar algn mensaje del archivo mbox, salga de mail y vuelva a leer los mensajes de mbox con mail -f mbox. Qu ha pasado? e) Repita estas pruebas hasta asegurarse de comprender bien el funcionamiento de mail. 11. SISTEMA DE ARCHIVOS. Estudie el comando touch. Qu har el comando touch archref si este archivo no existe? Y si ya existe? Verificar en mquina.

12. SEGURIDAD. a) El usuario jperez desea cambiar su contrasea. Cmo hace? Qu ayuda debe pedir al supervisor? b) El usuario jperez olvid su contrasea. Qu puede hacer por s mismo? Necesita ayuda del supervisor? c) Un usuario informa al supervisor que olvid su contrasea. Cmo puede el supervisor averiguar la contrasea que el usuario olvid? d) Cmo hace el supervisor para cambiar la contrasea del usuario jperez? 13. DOCUMENTACION. a) Estudiar las opciones del comando man y probarlas. b) Estudiar y probar los comandos whatis y apropos. Qu diferencia hay entre uno y otro? c) Debian y otras variedades de Linux traen un programa de documentacin en lnea ms sofisticado llamado info. Cmo podra obtenerse informacin sobre este comando? Tratar de determinar cules son sus capacidades y compararlo con man. 14. DOCUMENTACION. Estudiar en la Resea de Comandos los comandos mencionados en la ficha correspondiente a estos ejercicios. Interpretar, hasta donde sea posible con los conocimientos actuales, las opciones ofrecidas. Disear ejemplos para probarlas. Volver a revisar estas descripciones breves al reencontrar los comandos a lo largo del curso. 15. DOCUMENTACION. Las pginas man pueden ser difciles de interpretar. No obstantes, son la referencia obligada para conocer el sistema, y la autoridad ltima en cuanto a su funcionamiento. En el trabajo con UNIX es muy frecuente, an para usuarios experimentados, consultar estas pginas, debido la enorme cantidad de opciones ofrecidas y el control fino que permite el sistema. Revisar el contenido de la pgina man correspondiente a bash, el intrprete de comandos. Observar su extensin, contenido general y forma de redaccin.

Tutorial Ejercicios complementariosFichas referencia: Tutorial, Resea de Comandos. Agregar al final del archivo libro en el directorio /home/autor el archivo capitulo.11 del directorio actual. Averiguar si hay algn comando que referencie la palabra "sound" en su descripcin de primera lnea en las pginas man. Desplegar en forma sucesiva y paginada, las primeras 3 lineas de los archivos de nombre empezado con "aba" y terminado con ".log" del directorio /var/log/otros. Enviar un correo al usuario carletto del dominio nsk.com.uy, con ttulo "Desayuno de trabajo". El texto del mensaje est en el archivo invitacion.txt. Enviar un correo a los usuarios carletto del dominio nsk.com.uy, y a los usuario fermin y aparicio del dominio toros.edu.uy, todo en un solo comando. El ttulo es "Saludos matinales" y el texto del mensaje se encuentra en salusmat.txt. Escribir un comando para cambiar la contrasea propia. Escribir un comando para cambiar la contrasea del usuario pocholo (es posible? en qu caso?). Escribir un comando que muestre los grupos a los que pertenece el usuario jperez. Grabar en el archivo contra.senia la pgina man del comando que cambia la contrasea del usuario. Visualizar con more. Por qu se ven caracteres extraos? Listar archivos visibles e invisibles bajo el directorio corriente Listar archivos visibles y ocultos, en formato largo, en el directorio actual. Listar archivos visibles y ocultos, en formato largo, en el subdirectorio HOWTO del subdirectorio doc del directorio usr que est colgado del raz. Listar recursivamente todos los archivos bajo el directorio /var. Listar recursivamente todos los directorios, subdirectorios y archivos visibles e invisibles bajo el directorio /etc deteniendo el despliegue en cada pantalla. Listar recursivamente y en formato largo todos los archivos visibles e invisibles bajo el directorio /var deteniendo el despliegue en cada pantalla. Mostrar el directorio actual. Mostrar informacin relativa al usuario en la sesin actual. Mostrar los archivos del directorio /usr/doc/HOWTO a) en listado breve; b) en listado largo; c) incluyendo archivos ocultos; d) en listado largo e incluyendo archivos ocultos.

Obtener informacin del comando passwd. Obtener nombres de comandos relacionados con la contrasea, en ingls, "password". Para qu sirve el comando apropos? Dar un ejemplo de uso. Pedir al sistema informacin sobre el usuario root. Si conoce ms de un comando, indicarlos todos. Qu es el UID? Qu es el GID? Trasladarse, desde cualquier lugar, hacia el directorio propio del usuario. Luego, escribir un comando para indicar el directorio actual.

GNU infoinfo es un programa del proyecto GNU para leer o imprimir informacin. Sustituye a las pginas man, forma tradicional de mantener informacin acerca del sistema UNIX. Para obtener informacin sobre info, escribir info info info se basa en hipertexto; la informacin se organiza en "nodos" hacia los cuales es posible desplazarse. Un nodo es el texto que describe una unidad temtica. Los nodos se organizan jerrquicamente. El encabezado de cada nodo muestra el archivo donde se encuentra la informacin, el nombre del nodo actual, el nodo siguiente en la organizacin temtica, el nombre del nodo previo en la organizacin temtica, y el nodo superior en la jerarqua de informacin. El tema del nodo aparece en doble subrayado. Ejemplo de pantalla de info: File: info-stnd.info, Node: Top, Next: What is Info, Up: (dir) File: info-stnd.info, Node: Top, Next: What is Info, Up: (dir)The GNU Info Program ******************** This file documents GNU Info, a program for viewing the on-line formatted versions of Texinfo files, version 2.11. This documentation is different from the documentation for the Info reader that is part of GNU Emacs. * Menu: * What is Info:: * Options:: Options you can pass on the command line. * Cursor Commands:: Commands which move the cursor within a node. * Scrolling Commands:: Commands for moving the node around in a window. * Node Commands:: Commands for selecting a new node. * Searching Commands:: Commands for searching an Info file. * Xref Commands:: Commands for selecting cross references. * Window Commands:: Commands which manipulate multiple windows. * Printing Nodes:: How to print out the contents of a node. --zz-Info: (info-stnd.info.gz)Top, 28 lines --Top-----------------------------Pantalla: `--All----' abajo a la derecha: todo el texto cabe en una pantalla; `--Top----' abajo a la derecha: hay ms texto en pantallas siguientes. Menes: Los menes tienen esta estructura: * Menu: * Item1: Ttulo-item1 Descripcin ttulo item 1 * Item2: Ttulo-item2 Descripcin ttulo item 2

Para ir hacia un item de men: colocar el cursor y dar Enter; Ctrl-g para arrepentirse (antes de dar el Enter). Otra forma: m, luego el nombre del item o las primeras letras, TAB puede completar cuando las letras son suficientes Para volver al nodo superior, u. Elegir un item de men "baja" a ese nodo; con u se "sube" de regreso a l. * Item3:: A este nodo (con ::) se llega slo con dar Enter con el cursor sobre l. * Note Cross: Ref-Cruzada Referencia cruzada Para ir a una referencia cruzada, f. Con f? se muestra la lista de referencias cruzadas en el nodo actual. Ctrl-g cancela. Para terminar, q. Para volver a la informacin de info, m, luego Info. Teclas: h invoca tutorial de info ? lista de comandos de info, l para salir Ctrl-g aborta lo que se est haciendo Ctrl-L refresco de pantalla ESPACIO avanzar en el texto BS o Del retroceder en el texto b comienzo del nodo n p m f u l d q 1..5 g s nodo siguiente en la ordenacin temtica nodo previo en la ordenacin temtica elegir item de men, ir hacia ese nodo seguir una referencia cruzada a nodo superior nodo anterior visitado (last) a nodo directorio salir de info elegir item 1 .. 5 del men de nodo mover a un nodo indicando su nombre; puede darse el nombre de archivo, as (nombre-archivo)nombre-nodo buscar una cadena de caracteres, elegir el nodo de la siguiente ocurrencia

Introduccin al "shell"Crear dos archivos de prueba Comandos en el sistema UNIX Estructura de Comandos Expansiones de la lnea de comandos Variables de ambiente Entrecomillado de argumentos PS1 Entrada estndar y salida estndar Fin de flujo Agregar la salida estndar a un archivo Error estndar Interconexin de comandos (entubamiento) Filtros Campos y delimitadores Valores de retorno de los comandos El operador grave Secuencias de comandos Redireccin del shell Fin Bibliografa y Referencias El intrprete de comandos o "shell" acta entre el sistema operativo y el operador. Provee al usuario una interfaz hacia el sistema operativo. El usuario dialoga con el intrprete de comandos, y ste transfiere las rdenes al sistema operativo, que las ejecuta sobre la mquina. Crear dos archivos de prueba. Con el comando cat puede crearse un archivo aceptando el teclado como entrada estndar y direccionando la salida estndar hacia un archivo: cat >nota digitar las siguientes lneas, tal cual estn, terminando cada lnea dando ; finalizar con . Digitar con cuidado: una vez pasados al rengln siguiente, no puede volverse atrs para corregir. El shell es un intrprete de comandos. Es tambin un lenguaje de programacin. Los programas escritos con el shell se llaman scripts. Digitar para finalizar el ingreso. cat nota muestra el contenido digitado. Crear del mismo modo el archivo LEAME, haciendo cat > LEAME con este contenido:

Este es el archivo LEAME. Recuerde que UNIX diferencia entre maysculas y minsculas. El archivo LEAME tendr este contenido.

cat LEAME para verificar el contenido.

Comandos en el sistema UNIX. En UNIX, los comandos son programas ejecutables separados. El shell es un intrprete de comandos: puede expandir y cambiar la manera en que actan los comandos, admite el uso de comodines y la interconexin o entubamiento de comandos. Estructura de comandos. La estructura general de un comando es la siguiente: nombre opciones argumentos nombre es el nombre del comando. Las opciones o banderas controlan la forma en que acta el comando; van precedidas por el signo - (menos). Los argumentos son comnmente nombres de archivos o nombres de login de usuarios. pr -l23 nota pr -l23 LEAME da formato y muestra el archivo indicado en pginas de 23 lneas de largo para que quepa en la pantalla. pr -d -l23 LEAME muestra el archivo LEAME a doble espacio, largo de pgina 23. pr -d -o15 -l23 LEAME doble espacio, margen izquierdo de 15 espacios, largo de pgina 23. pr -l23 nota LEAME | more muestra los dos archivos uno tras otro, pero los pagina separados. cat nota LEAME concatena los archivos; los presenta uno tras otro. cat nota LEAME | pr -l23 concatena los archivos y luego les da formato a los dos juntos. Expansiones de la lnea de comando. Los comodines son caracteres que sustituyen cadenas de caracteres. * secuencia de caracteres cualesquiera, 0 o ms. ? caracter cualquiera, uno y uno slo; debe aparear un caracter. [...] sustituye los caracteres indicados individualmente.

Variables de ambiente. Las variables de ambiente son cadenas de caracteres de la forma nombre=valor nombre es cualquier cadena de caracteres que no incluya $ ni espacio (\b); valor es cualquier cadena; puede incluir el espacio si el valor est entre comillas. MUESTRA="hola chicos" asigna "hola chicos" a la variable MUESTRA. echo $MUESTRA muestra en pantalla el contenido de la variable MUESTRA. Para exhibir el contenido de una variable de ambiente se escribe echo $nombre-variable. En general, para hacer uso del contenido de una variable, se escribe $nombre-variable. Es una costumbre muy arraigada en UNIX usar maysculas para los nombres de variable, as como es una regla usar minsculas para los comandos. Las opciones pueden ser maysculas y minsculas; la opcin -a no es lo mismo que -A. Las variables de ambiente pueden ser usadas como nombres de comando o como argumentos de un comando. XYZ="cat nota" $XYZ la variable XYZ contiene un comando, y al ser invocado su contenido, el comando es ejecutado. echo hola $MUESTRA chicos la variable puede usarse en la formacin de cadenas. echo hola${MUESTRA}chicos la variable puede embeberse en una cadena; las llaves delimitan el nombre de la variable. env muestra las variables de ambiente definidas. Muchas son fijadas en el ingreso del usuario al sistema (variables de login); y otras son propias del shell (variables del shell). echo $LOGNAME muestra el nombre de login del usuario. echo $HOSTNAME muestra el nombre de la mquina. echo $NOEXISTE Las variables no definidas no muestran nada cuando son referenciadas. Entrecomillado de argumentos en la lnea de comandos. Los espacios separan argumentos. El entrecomillado obliga a tratar una cadena con espacios como si fuera un solo argumento. Cuando se usan comillas dobles (" ") el shell interpreta las variables de ambiente includas, actuando segn su contenido: MUESTRA="Mi nombre de login es $LOGNAME"

echo $MUESTRA

Cuando se usan comillas simples (' ') el shell no interpreta las variables de ambiente, tratando sus nombres como cadenas: MUESTRA='La variable $LOGNAME contiene su nombre de login' echo $MUESTRA Las comillas simples permiten usar comillas dobles: echo '"hola chicos"' PS1. Aunque generalmente los omitimos, en los ejemplos de esta seccin mostraremos el indicador de comandos y la salida de ejecucin. La variable smbolo de indicador de comandos nivel 1 PS1 (Prompt Symbol level 1) es un valor de ambiente que puede no aparecer en la salida de env: $ echo $PS1 $ responde con el indicador de comandos actual, $. $ PS1=hola: hola: carga un nuevo indicador de comandos; el sistema responde con el nuevo indicador de comandos, hola:. hola: MUESTRA="ingrese comando:" hola: PS1=$MUESTRA ingrese comando: MUESTRA=hola ingrese comando: echo $MUESTRA hola ingrese comando: la variable MUESTRA cambi pero el indicador no cambi; ingrese comando: PS1='$' $ repone el indicador de comandos. Entrada estndar y salida estndar. Los comandos leen como entrada una secuencia de caracteres (flujo de entrada o "input stream"), y escriben a la salida otra secuencia de caracteres (flujo de salida o "output stream"). Estas secuencias no tienen estructura interna alguna, y se les llama entrada estndar y salida estndar. cat nota > nota2 redirige la salida estndar a un archivo que crea o sobreescribe, en vez de a la pantalla. mail juan < nota toma la entrada estndar de un archivo en vez del teclado. pr < nota > nueva.nota

el archivo nota es la entrada, el archivo nueva.nota es la salida. cat nueva.nota muestra el archivo donde se grab la salida con formato. Los smbolos < y > redirigen entrada y salida estndar: < nombre_entrada redirige la entrada estndar > nombre_salida redirige la salida estndar MUESTRA=/etc/passwd pr < $MUESTRA > lista.usuarios more lista.usuarios Los comandos y los archivos tienen una estructura orientada a caracter. En muchos comandos se puede intercambiar teclado por archivos o dispositivos de hardware. cat nota cat < nota son comandos equivalentes porque cat opera sobre un archivo y tambin sobre la entrada estndar. cat nota LEAME nueva.nota cat nota - nueva.nota < LEAME son comandos equivalentes. El signo menos (-) aislado equivale a tomar en ese punto la entrada estndar, que usualmente est asignada al teclado. Fin de flujo. El ingreso de datos desde el teclado, as como el despliegue en pantalla, se manejan en UNIX como "flujos de caracteres", una serie de caracteres uno tras otro. Para indicar en el teclado el fin de un flujo de caracteres se usa Ctrl-D. Este smbolo no forma parte del ingreso; simplemente indica el final del ingreso, que ya no se escribir ms. En UNIX no hay un caracter especial para indicar fin de archivo; el sistema sabe cuando termina un archivo por medio de contadores. cat nota - nueva.nota > arch.salida procesa el archivo nota, lee lo que se digite en el teclado hasta recibir un Ctrl-D, procesa nueva.copia y escribe todo en el archivo arch.salida; se renen tres fuentes distintas en una nica salida. cat arch.salida muestra todo lo reunido. Agregar la salida estndar a un archivo. cat < nota > nota.copia cat nota nota.copia > doble.nota rm nota.copia doble.nota contiene nota dos veces. Se logra lo mismo con

cat nota > dup.nota cat nota >> dup.nota El smbolo >> redirige la salida estndar a un archivo, pero agregando al final del mismo en lugar de reemplazar su contenido. Error estndar. Adems de los flujos de entrada y salida estndar, existe un tercer flujo de caracteres, el error estndar, hacia donde se dirigen los mensajes de error. El error estndar est dirigido habitualmente a la pantalla, pero mediante 2> o 2>> se redirige el error estndar hacia un archivo de errores. Los flujos estndar se reconocen por los siguientes nmeros: 0 la entrada estndar, usualmente el teclado; 1 la salida estndar, usualmente la pantalla; 2 el error estndar, usualmente la pantalla. echo Archivo de errores > salida.error cat noexiste 2>>salida.error cat salida.error el archivo salida.error contiene el mensaje inicial y el de error. ls noexiste 2>>salida.error rm noexiste 2>>salida.error cat salida.error rene los mensajes de error en el archivo salida.error . Interconexin de comandos (entubamiento). El operador | hace que la salida del comando precedente sea la entrada del comando siguiente, creando un entubamiento o interconexin de comandos. cat nota LEAME | pr > salida hace que la concatenacion de los archivos nota y LEAME sea servida al comando pr, cuya salida est redirigida a un archivo. cat - LEAME < nota | pr > salida tiene el mismo efecto. Notar la posicion de redireccion redirigen, | conecta comandos. Filtros. Muchos comandos estn pensados para ser interconectados, pasando simplemente la entrada hacia la salida, por lo que se les llama habitualmente filtros. echo 'hola chicos' | tr l p tr traduce caracteres y produce 'hopa chicos'. echo 'hola chicos' | tr lo pa

produce 'hapa chicas'. Campos y delimitadores. Un campo es una cadena de caracteres separada por un caracter delimitador. El archivo / etc/passwd tiene en cada lnea una serie de campos separados por dos puntos (:) . more /etc/passwd muestra el contenido de /etc/passwd. cut -f1 -d: < /etc/passwd cut -f1,3,5 -d: < /etc/passwd muestra los campos pedidos usando el delimitador : (dos puntos). cut -c1-8 < /etc/passwd muestra columnas 1 a 8. ls -l | cut -c56corta el listado de archivos desde donde empieza el nombre al final. sort < /etc/passwd | cut -f1 -d: | more ordena las lneas, corta el primer campo y presenta los nombres de usuarios habilitados en el sistema. env | cut -f1 -d= | sort muestra nombres de variables de ambiente ordenadas; el separador es =. Valores de retorno de los comandos. Los comandos devuelven un cdigo de retorno 0 si el comando termina correctamente, o un nmero entre 1 y 255 segn la razn de falla. El cdigo de retorno del ltimo comando queda en una variable llamada '?', que se interroga como $?. cat noexiste ERROR=$? echo $? echo $ERROR guarda el cdigo de error; la asignacin termina bien, por lo que en $? queda 0, pero en ERROR qued el nmero de error de la operacin fallida. $? es una 'variable de shell' mantenida internamente por el propio intrprete. Otras variables de shell son: # nmero de argumentos en el comando para la shell actual $ nmero de proceso para el shell actual Estas variables se interrogan como $# y $$. El operador grave.El acento grave (`) asigna a una variable de ambiente la salida estndar de un comando. El largo de la variable es limitado, pero usualmente > 5120 en SVR4. MUESTRA=`echo $LOGNAME` echo $MUESTRA escribe el nombre de login del usuario. wc /etc/passw

cuenta lneas, palabras y caracteres. El comando wc (word count) acepta opciones -l para lneas, -w para palabras y -c para caracteres. TOTALPALABRAS=`cat * | wc -w` echo $TOTALPALABRAS cuenta las palabras en todos los archivos del directorio. Tambin echo `cat * | wc -w` echo Total de palabras en el directorio: `cat * | wc -w` El acento grave permite ejecutar un comando dentro de otro, encerrando el comando anidado entre acentos graves. Secuencias de comandos. El shell es tambin un lenguaje de programacin. Pueden escribirse varios comandos en una misma lnea separndolos con ; (punto y coma). date ; echo Hola ; echo $LOGNAME MUESTRA=`date ; echo Hola ; echo $LOGNAME`;echo $MUESTRA Redireccin del shell. El shell que atiende los comandos del usuario es el login shell; arranca cuando el usuario ingresa al sistema y termina cuando sale. Escribir sh como comando invoca una segunda instancia del shell, que puede terminarse con el comando exit o con . Puede crearse un archivo de comandos haciendo cat > datos.usuario y escribiendo las siguientes lneas. Pueden omitirse los comentarios (de # en adelante) echo Salida del comando datos.usuario echo Fecha: `date ` # fecha y hora echo Usuario: $LOGNAME # nombre de login del usuario ps # procesos corriendo del usuario echo Shell actual: $$ # nmero de proceso para el shell actual finalizar con . Los # indican comentario. Para convertir el archivo en ejecutable para el usuario, hacer chmod u+x datos.usuario Verificar con ls -l. Los comandos ingresados en el archivo pueden ejecutarse con sh datos.usuario Este comando invoca una nueva instancia de shell que no es la del ingreso al sistema. Agregar una lnea ms haciendo cat datos.usuario - >> masdatos.usuario y escribiendo

cat noexiste # intenta mostrar un archivo inexistente Finalizar con . echo "Archivo de errores del usuario" > errores.usuario coloca una lnea descriptiva en el archivo errores.usuario. cat errores.usuario verifica su contenido. sh salida.usuario 2>>errores.usuario lee los comandos del archivo masdatos.usuario en la entrada estndar, redirige la salida estndar al archivo salida.usuario y redirige la salida del error estndar al archivo errores.usuario. cat salida.usuario cat errores.usuario Fin. Borrar con el comando rm los archivos auxiliares; conservar para referencia los archivos nota, LEAME, datos.usuario , masdatos.usuario y eventualmente otros que le interesen. Preguntas y Ejercicios Ejercicios Complementarios

Bibliografa y Referencias: Comandos: cat chmod pr echo env tr cut sort wc ps Referencias: Coffin[1989], Greenfield[]. Pginas man/info de Linux "bash" ("Bourne-Again SHell").

Preguntas y Ejercicios. Ficha Referencia: Introduccin al ShellEstructura de archivos. Estructura del archivo /etc/passwd: #nombre:contrasea:UID:GID:comentarios:dir_propio:shell jperez:Xdio0IKLLP:1130:103:Juan Prez:/home/jperez:/bin/bash Estructura del archivo /etc/group: #grupo:GID:lista_usuarios docentes:103:victor,german,fernando Estructura del archivo /etc/hosts: #nmero_IP nombre_mquina alias 10.137.137.250 liebre.cdi.edu.uy liebre localhost mailhost Todos los archivos anteriores pueden tener comentarios (lneas comenzadas por #). COMANDOS. Cambiar hacia el directorio /etc, verificar que se est all mostrando el nombre del directorio actual, desplegar la lista de archivos en ese directorio, volver al directorio propio, verificar. COMANDOS. Estudiar en la resea de comandos el comando more, asegurndose de conocer la forma de avanzar una pgina, retroceder una pgina, avanzar y retroceder una lnea, y salir de more. Sugerencia: usar el comando man ls para mostrar la pgina man del comando ls ; las pginas man se paginan con more automticamente. Repetir con less, anotando las diferencias. FILTROS. Crear el archivo hosts.txt con las 10 primeras lneas del archivo / etc/hosts; crear el archivo group.txt con las 10 ltimas lneas del archivo / etc/group . Verificar su contenido. Concatenar ambos archivos presentndolos juntos en pantalla. FILTROS. Presentar el archivo largo /etc/inetd.conf con formato de impresin fijando el largo de pgina en 23; paginar la presentacin en pantalla para poder examinarlo. REDIRECCION. Crear el archivo lineas con el texto "Archivo lineas" como contenido. Verificar con listado largo sus caractersticas de creacin, explicando la salida del comando ls -l. Agregar al archivo creado una lnea de texto, por ejemplo "Esta es la lnea 1", y mostrar su contenido. Repetir agregando otra lnea similar, y mostrar el contenido del archivo. COMANDOS. Analizar la salida de los siguientes comandos: who, who am i, whoami e indicar las direrencias. Analizar la salida de los comandos hostname, id. COMANDOS. Analizar la salida del comando finger nombre-usuario . Use primero su propio nombre de usuario, luego el de otro usuario del sistema. Qu informacin brinda? COMANDOS. Usando el directorio /bin, mostrar todos los nombres de archivo que empiecen con c; mostrar luego todos losnombres de archivo que terminen con t; mostrar finalmente los nombres de archivo que empiecen con c y terminen con t.

VARIABLES. a) Asignar el valor "Lunes" a la variable DIA1, el valor "Martes" a la variable DIA2, hasta asignar "Domingo" a la variable DIA7. b) mostrar el valor de todas para verificar. c) Usando estas variables, obtener la salida Semana: Lunes Martes Mircoles Jueves Viernes Sbado Domingo d) Usando slo las variables definidas, cargar en la variable SEMANA la lista de das, separados por espacios. Mostrar el contenido de SEMANA para verificar. VARIABLES. Usando variables del ambiente del usuario (variables de login), mostrar a) va del directorio propio del usuario; b) nombre de login del usuario; c) nombre de la terminal en uso en la sesin actual; d) nombre del intrprete de comandos actual. e) va de bsqueda de ejecutables. f) Mostrar todas las variables de ambiente. Cules puede reconocer? VARIABLES. a) Fijar el valor de la variable VIAS en "/usr/doc:/var/lib/dpkg"; mostrar su contenido. b) agregar a la variable VIAS el directorio /usr/doc/HOWTO al final, y /usr/ doc/FAQ al principio. ERROR. a) Qu muestra el shell para la variable NOEXISTO ? Qu cdigo de error devuelve? b) Asignar a la variable NULA la cadena nula. Qu muestra el shell para esta variable? Qu codigo de error devuelve? Repetir asignando blancos. c) Asignar a la variable BLANCOS una cadena con blancos embebidos, por ejemplo "Esta cadena contiene blancos". Qu pasa si no se usan comillas al asignar? Explicar el comportamiento. Mostrar el cdigo de error devuelto en cada caso. d) Mostrar el contenido del archivo /etc/group. Qu cdigo de error devuelve el comando? e) Mostrar el contenido del archivo noexiste. Qu cdigo de error devuelve el comando REDIRECCION. a) Con el comando cat, mostrar en pantalla el archivo /etc/services. b) Escribir el comando cat de modo redireccionando la entrada estndar desde el archivo /etc/services y la salida estndar hacia el archivo servicios.txt. Visualizar servicios.txt. c) Usando echo, crear un archivo errores.txt con contenido "Archivo de Errores". d) Con el comando cat, intentar mostrar el archivo noexiste.xxx sin redireccionar entrada estndar, pero redireccionando la salida estndar hacia noexiste.txt y el error estndar para agregar al archivo errores.txt. Visualizar errores.txt. REDIRECCION (terico). a) Haciendo uso del shell bash invocar el script comotodo para que lea desde el archivo larguisimo, no muestre ni grabe su salida y grabe los errores en el archivo errores. b) Repetir para que no muestre ni grabe los errores.

VARIABLES. Predecir y explicar la salida de los siguientes comandos: echo $LOGNAME echo "$LOGNAME" echo '$LOGNAME' echo \"$LOGNAME\" echo "Mi login es $LOGNAME" echo 'Mi login es $LOGNAME' EXPANSIONES DEL SHELL (terico). Escribir expresiones para englobar todos los nombres de archivos que a) comiencen con un dgito. b) terminen con una vocal. c) terminen con una letra mayscula. d) de 6 caracteres terminados en dos dgitos. e) formados por tres letras: una minscula, una mayscula o minscula, una vocal minscula. Ejemplos: sTa, bta, mbu, tTo. f) empezados con letra minscula, terminados con un punto y tres dgitos. VARIABLES DE AMBIENTE. a) visualizar el contenido de la variable que guarda el indicador de comandos; copiar en un papel su valor actual. b) Cambiar el indicador de comandos para que se muestre as: UNIX listo> Recordar que > es un caracter de redireccin del shell; es interpretado por el shell. c) Inicializar la variable VAR1 con la cadena "shell bash 1". Mostrar su contenido. Invocar ahora el shell csh. Mostrar contenido de la variable VAR1. Explique. d) Salga de csh. Qu valor tiene VAR1 ? Explique. e) En el primer shell (shell de login), ejecute el comando export VAR1

y repita el paso anterior. Qu ha pasado? f) Si en lugar de csh invocamos una nueva instancia de bash, ocurrir lo mismo? FILTROS. a) Obtener una lista de los usuarios habilitados en el sistema, usando el archivo / etc/passwd. Sugerencia: filtrar las lneas de comentario conectando la salida del listado con el comando de filtro grep -v "^#", que elimina las lneas empezadas con "#". b) Repetir, pero mostrando slo nombre de login y nombre en la vida real. c) Repetir, ordenando alfabticamente. d) Crear el archivo usuarios.txt con la lista, con un encabezado similar a ste: =================================== Usuarios en el Sistema. Lunes 23 de Agosto de 1999, 20:45 ================================== e) Presentar el contenido del archivo en formato de impresin, con encabezado en cada pgina diciendo "Lista de Usuarios", longitud de pgina 23 y margen izquierdo

12. FILTROS. a) Contar la cantidad de lneas, palabras y caracteres en el archivo historia.txt. b) Contar la cantidad de usuarios habilitados en el sistema. c) Contar la cantidad de archivos en el directorio /bin usando el comando ls. d) Repetir usando el comando ls -l. Explicar la diferencia. FILTROS. a) Mostrar el archivo historia.txt todo en maysculas. Resolver bien la y las vocales acentuadas. b) Repetir, pero dejando las vocales acentuadas minsculas como vocales no acentuadas maysculas. c) Transformar todos los espacios en subrayas (_). Contar ahora las palabras. Cuntas haba en el archivo sin transformar? OPERADOR GRAVE. a) Escribir comandos para cargar la variable LISTA con los nombres de los archivos del directorio actual. b) Crear el archivo usuarios.txt con 4 o 5 nombre propios, uno en cada lnea. Cargar en la variable USUARIOS el contenido del archivo usuarios.txt. Mostrar contenido de USUARIOS c) Sin editar el archivo usuarios.txt, agregar al final del mismo la fecha y hora del da. d) Cmo hara para agregar la fecha y hora del da al principio del archivo? PROCESOS. a) Mostrar los procesos propios corriendo en el sistema. b) Explicar la salida del comando ps auxw. c) Idem para ps ajxw. d) Si estamos corriendo varias instancias de bash, cmo sabemos cul es el shell de login? Nota. Para estos ejercicios, el archivo historia.txt puede ser sustitudo por cualquier archivo de texto en espaol.

Introduccin al Shell Ejercicios complementariosFichas referencia: Introduccin al Shell, Resea de Comandos. Agregar a la variable PATH el directorio /usr/local/bin de modo que los comandos sean buscados en ese directorio antes que en cualquier otro. Agregar a la variable PATH los nombres de directorio /var/lib/dpkg y /usr/doc/HTML. Al escribir comandos, qu diferencia hay entre usar comillas dobles y simples? Al ingresar comandos, para qu sirven los smbolos ";" y "|"? Asignar a la variable DIA el valor "Lunes" y mostrarla. Asignar a la variable PATH el contenido de la propia variable PATH ms el directorio /opt/Office52. Borrar del directorio actual los archivos carta_10 a carta_30 inclusive. Desplegar en pantalla uno tras otro los archivos cap1, cap2 ... cap9 del directorio actual deteniendo el despliegue a cada pantalla. Diferenciar los caracteres "|", "\", "/" y ";" en el shell, indicando para qu se usa cada uno. Ejecutar el comando nodigo de modo que no produzca ninguna salida ni muestre ningn error. Ejecutar el comando nsk del directorio /usr/local/bin de modo que tome su entrada del archivo datos del directorio del usuario jperez en /home, grabe su salida en el archivo jperez.dts del directorio actual y los errores en jperez.errs del directorio actual. Ejecutar el comando (hipottico) llamado nsk ubicado en el directorio /usr/local/ bin de modo que tome su entrada del archivo datos del directorio del usuario jperez en /home, grabe su salida en el archivo jperez.dts del directorio actual y los errores en jperez.errs del directorio actual. Escribir un script que reciba un nombre de archivo como parmetro y agregue, al principio del archivo, las leyendas MEMORANDUM | Montevideo, URUGUAY | (fecha del da) | (rengln en blanco) | , donde la barra vertical indica cambio de lnea. Si se usan archivos temporales, eliminarlos al terminar. Sugerencia: el nombre de archivo pasado como parmetro est disponible, dentro del script, en la variable llamada $1.

Fijar en la variable TRABAJO el nombre /grupos/docentes/examenes/dic1999. Usar la variable para trasladarse rpidamente a ese directorio. Los parntesis y otros smbolos son "interpretados por el shell". Cmo puede escaparse esta intepretacin y mostrar los parntesis? Escribir un comando que muestre en pantalla la leyenda "(aqu se ven los parntesis)" de todas las formas que sepa hacerlo. Mostrar el cdigo de error del ltimo comando ejecutado. Mostrar la pgina del manual del comando que da formato para imprimir. Mostrar las primeras dos lneas de los archivos cap01.txt a cap99.txt del directorio novela bajo el directorio actual. Mostrar la salida paginada. Mostrar las ltimas 20 lneas del archivo lista.001 del directorio padre del actual. Mostrar todas las variables de ambiente. Para qu sirve el operador grave? Dar un ejemplo. Qu contiene la variable PATH?

UNIX y CEl sistema operativo UNIX suele venir acompaado de un compilador para lenguaje C. Escribiendo programas en lenguaje C es posible crear comandos indistinguibles de los propios de UNIX. Como ejemplo, puede crearse el siguiente archivo, usando un editor de texto sencillo como el ae, o el comando cat si se tiene f en la propia digitacin. Contenido del archivo hola.c: /* hola.c: programa de saludo */ #include main() { printf("Hola, mundo\n"); } Compilar el contenido de este archivo con el comando cc hola.c -o hola Esto crea el archivo de salida hola, ejecutable en UNIX mediante el comando ./hola Imprime, como es de suponer, la frase "Hola mundo". Un ejemplo ms interesante, con uso de llamadas a la biblioteca del sistema, es el ejemplo siguiente, una versin muy mnima del comando cat, que llamaremos cati. Contenido del archivo cati.c: /* cati: cat versin mnima */ # define LARGO 1024 /* define valor de variable LARGO */ main() { char bufer[LARGO]; /* declara un arreglo de caracteres */ int n; /* para contar caracteres ledos */ /* llamada al sistema para leer caracteres desde la entrada estndar (0), hacia el arreglo bufer, en cantidad igual al tamao del arreglo bufer */ n = read(0, bufer, sizeof bufer); /* primera lectura */ /* repite mientras haya caracteres ledos, es decir, n>0 */ while (n > 0) { /* llamada al sistema para escribir caracteres en salida estndar (1), en cantidad n, extrayendo desde arreglo bufer */ write(1, bufer, n);

n = read(0, bufer, sizeof bufer); */ } } exit(0);

/* siguientes lecturas

/* sale devolviendo cdigo de retorno 0 */

Los extensos comentarios explican el funcionamiento. Compilar este programa con el comando cc cati.c -o cati Esto crea el archivo de salida cati, ejecutable en UNIX. El comando ./cati hola cat hola mv hola saludo cat saludo mv cambia el nombre del archivo hola por el de saludo. mv saludo dir1/saludo.1 mueve hacia otro directorio cambiando el nombre. mv dir1 dirnuevo cambia de nombre archivos o directorios. rm -r dirnuevo elimina dirnuevo y todos sus archivos. Enlaces "hard". Un enlace "hard" (hard link) es una nueva referencia a un mismo archivo; consiste en una nueva entrada de directorio que apunta a un archivo ya existente y apuntado desde otra entrada de directorio. El contenido se encuentra en un solo lado, pero el archivo puede ser accedido desde varios lugares, eventualmente con diferentes nombres. echo 'Hola todos de nuevo!' > adios ln adios adios.ln0 ln crea un segundo nombre referido al mismo archivo; no se hace copia, crea un enlace (link). Verificar que ls -l adios*

muestra un conteo de 2 en la columna de enlaces. Al crear el enlace con el comando ln, observar que el archivo existente va en primer lugar, luego uno o ms nombres de enlaces a crear. ln adios adios.ln1 ln adios adios.ln2 ls -l adios* muestra el conteo de enlaces hard en estos archivos. mkdir dir2 ln adios dir2/adios hace aparecer en dir2 un enlace llamado adios hacia el archivo adios del directorio actual. Un enlace hard puede hacer aparecer un mismo archivo en ms de un directorio, con igual o distinto nombre; el contenido est en un solo lado, no est repetido. rm adios* ls -l dir2/adios Cuando se borra un archivo con varios enlaces, slo se borra el enlace. El archivo es realmente borrado slo cuando desaparece el ltimo enlace. ln dir2 dir2ln da error; no se puede crear un enlace hard para un directorio. Enlaces simblicos. Un enlace simblico (symbolic link) es un archivo que apunta a otro archivo o directorio. El archivo de enlace simblico contiene solamente la ruta del otro archivo o directorio. ln -s nota nota.ls0 crea nota.ls0 como enlace simblico. ln -s dir2 dir2ls crea dir2ls como enlace simblico hacia un directorio. ls -l muestra la letra l en el tipo de archivo para indicar que es un enlace simblico. ls dir2 ls dir2ls muestran el mismo contenido de archivos. ls -l dir2ls muestra que es un enlace simblico e indica hacia donde apunta. cd dir2ls ls -l muestra el contenido de dir2, enlazado desde dir2ls. pwd indica el directorio con nombre del enlace, pero

/bin/pwd muestra el directorio verdadero, no el enlace simblico; pwd indica la ruta por la que se lleg al directorio, /bin/pwd indica la ruta de acceso al verdadero directorio. Conviene usar /bin/pwd para evitar ser engaado por enlaces simblicos a directorios. El comando pwd es interno del shell, /bin/pwd es un programa aparte. cd .. mv dir2 DIR2 cambia el nombre del directorio real; el enlace simblico sigue apuntando a dir2, por lo que cd dir2ls da error, ya que no existe el objeto real. mv DIR2 dir2 repone el nombre original al que apunta el enlace. rmdir dir2ls da error porque no es un directorio sino un enlace. rm dir2ls borra el enlace. Un enlace simblico se borra con rm, y no con rmdir, puesto que el enlace simblico es un archivo y no un directorio, an cuando sea un enlace simblico hacia un directorio. ls dir2 cuando se borra un enlace simblico, slo se borra un archivo puntero, y no el objeto real. Opciones del comando ls. ls -1 muestra un item por lnea. Cuando ls se usa en interconexiones, la salida de ls presenta un item por lnea por defecto. ls -C fuerza el despliegue encolumnado. ls -a muestra todos los archivos, incluyendo los que comienzan con punto, normalmente no mostrados. El directorio corriente . y el directorio padre .. son entidades reales. ls -F /bin ls -F agrega sufijo que indica el tipo de archivo: / directorio, * ejecutable, @ enlace simblico. ls -R muestra recursivamente todos los archivos, subdirectorios y archivos dentro de subdirectorios. Para ver un listado ms largo, ls -CR /etc | more ln -s dir2 dir2ls ln nota nota.ln0

ls -l listado largo, muestra atributos de los archivos: tipo de archivo (primer caracter), permisos (9 caracteres), enlaces hard (en archivos), dueo, grupo, tamao en bytes, fecha y hora, nombre. -rw-r--r-- 1 esteban other 138 Apr 5 19:34 LEAME drwxr-xr-x 2 esteban other 138 Apr 5 19:34 dir2 lrw-r--r-- 1 esteban other 138 Apr 5 19:34 dir2ls ->./dir2 -rw-rw-rw- 1 esteban other 138 Apr 5 19:34 nota El smbolo -> indica "apunta hacia" para enlaces simblicos. Cambio de dueo y grupo. chown usuario1 nota cambia el dueo del archivo nota adjudicndoselo a usuario1. chown usuario1 arch1 arch2 cambia el dueo de la lista de archivos indicada. No puede revertirse, ya que el usuario actual dej de ser dueo de esos archivos. Si el archivo tiene permiso de lectura, es posible copiarlo para disponer de una copia propia. El cambio de dueo no est permitido a usuarios comunes, sino reservado al supervisor para evitar que a un usuario se le adjudiquen archivos sin su consentimiento. chgrp tecnicos nota cambia de grupo el archivo notas, adjudicndoselo al grupo tecnicos. El dueo debe pertenecer al grupo tecnicos. chgrp tecnicos arch1 arch2 cambia el grupo de la lista de archivos. Modos de permisos. Los permisos de archivos y directorios se cambian con el comando chmod. Pueden expresarse de dos maneras: simblica y absoluta. En la forma simblica, se usa la siguiente sintaxis: [ugoa...][[+-=][rwxstugo...] + agrega permiso a los existentes - quita permiso de los existentes = nicos permisos asignados al archivo r lectura w escritura x ejecucin, o acceso si es directorio s usa el id del dueo o grupo del archivo al ejecutar t fijar "sticky bit" a un directorio: slo dueos pueden borrar u usuario (dueo) g grupo

o otros a todos (dueo, grupo y otros) Ejemplos de permisos en notacin simblica: u+r g+w-r ug+r ugo+w-rx u+rwx,g+r-wx,o-rwx chmod u+rwx,g+rw-x,o+r-wx arch1 chmod u=rwx,g=rw,o=r arch1 cambian los permisos de los archivos indicados. En modo absoluto se usa un cdigo de 4 dgitos octales 0..7, en la forma Nnnn. N, primer dgito: 4 fijar ID del dueo al ejecutar 2 fijar ID del grupo al ejecutar 1 fijar "sticky bit" a un directorio nnn, 3 dgitos: permisos del usuario, grupo y otros, con el cdigo 4 lectura 2 escritura 1 ejecucin, o acceso si es directorio Ejemplos de permisos en notacin absoluta: 0777 0755 0764 0640 0710 chmod 0764 arch1 cambia los permisos como en el ejemplo anterior. Listado de permisos de los directorios. ls -l muestra los permisos y otros atributos. Para obtener informacin del directorio dir1 ubicado en el directorio actual, ls -l lista todos los archivos, entre los que aparece dir1; ls -l dir1 lista el contenido del directorio dir1. ls -ld dir1 trata la entrada dir1 como archivo, sin listar su contenido, y dando sus atributos como directorio. ls -ld . muestra atributos del directorio actual. Cambio de permisos. chmod u-w nota

quita permisos de escritura al dueo. chmod u+w nota concede permisos de escritura al dueo. chmod u-w+x nota chmod u-wx+r nota cambian varios permisos del dueo al mismo tiempo. chmod u+w nota chmod g+w nota chmod o+w nota concede permiso de escritura solo al usuario, al grupo o a otros. chmod u+rw-x,g+r-wx,o+r-wx nota fija todos los permisos en una sola operacin. Los permisos que no se mencionen quedan como estn. chmod 0644 nota realiza lo mismo en notacin absoluta. El comando chmod admite las opciones -v verboso, describe los permisos cambiados -f no da error sobre permisos que no pueden cambiarse -R recursivo, cambia permisos de directorios y sus archivos chmod -v u+rwx,g+rw-x,o+r-wx arch1 chmod -v 764 arch1 chmod -v 444 arch1 chmod u=rw,go=r arch1 fija permisos en rw-r--r--. chmod u=rwx,u+s arch1 ejecutar arch1 con permiso del dueo de arch1. chmod -vR a+r dir1 da permiso de lectura a todos los directorios bajo dir1, anunciando en forma verbosa lo hecho. chmod ugo+rwx dirtodos chmod a+t dirtodos fija "sticky bit": a pesar de tener el directorio permisos totales para todos, slo pueden borrarse los archivos propios del usuario, no los ajenos. chmod 1777 dirtodos realiza lo mismo. Los permisos s (setuid, setgid) hacen que un archivo ejecutable ejecute con permisos del usuario dueo o del grupo dueo del archivo, cualquiera sea el usuario y grupo de quien lo invoca. El permiso setgid sobre un directorio hace que los archivos y subdirectorios creados en l pertenezcan al grupo del directorio, y no al grupo primario del usuario, como es normal; esto es til para los grupos de trabajo. El

permiso t (sticky bit) se aplica a directorios con permisos totales; limita la operacin de borrado al dueo del archivo o subdirectorio. Los modos S y T, que pueden aparecer en ls -l, indican modos sin sentido: setuid o setgid sobre archivos no ejecutables, sticky bit sobre directorio sin permisos para todos. basename, dirname echo $EDITOR muestra la variable de ambiente que contiene el nombre del editor por defecto. Si no aparece nada, inicializarla: which vi para obtener la va hacia el editor vi. EDITOR=/usr/bin/vi echo $EDITOR muestra el nombre del editor a usar por defecto. MIEDITOR=`basename $EDITOR` echo "Mi editor es $MIEDITOR" muestra el nombre del archivo sin ruta; basename quita la ruta a un nombre de archivo calificado con ruta. DIREDITOR=`dirname $EDITOR` dirname separa la ruta del nombre completo. echo "Mi editor es $MIEDITOR en el directorio $DIREDITOR" muestra el uso en comandos de variables de ambiente. echo "Mi editor es "`basename $EDITOR`" en "`dirname $EDITOR` muestra el uso del operador grave para ejecutar comandos dentro de otros comandos. Archivos de dispositivos. El sistema de archivos de UNIX provee una interface estndar entre los dispositivos de hardware y el sistema operativo que acta igual que un archivo comn: todas las operaciones de entrada y salida se hacen escribiendo y leyendo sobre un archivo. No se trata de un archivo comn en disco; acta como una ruta hacia un canal de entrada/ salida del hardware. As como se redirige la salida de un comando hacia un archivo, puede redirigirse tambin hacia un disco, una cinta o un mdem con slo mencionar el nombre del dispositivo correspondiente. tty devuelve el nombre del dispositivo asociado al terminal, por ejemplo /dev/tty1. Tomando ese mismo nombre ls -l /dev/tty1 obtenemos un listado de atributos del "archivo" controlador de este dispositivo, algo as como crw-rw-rw- 1 usuario1 otros .... /dev/tty1

El primer caracter indica el tipo de dispositivo: c si es orientado a caracteres, b si es orientado a bloques. Terminales, impresoras y modems son orientados a caracter, discos y cintas son orientados a bloque. cat - < /dev/tty1 para escuchar en la propia sesin de terminal; escribir varias lneas y finalizar con Ctrl-D. cat - < `tty` produce el mismo efecto. Luego probar $ cat - > `tty` puede explicarse el comportamiento? El comando mesg. ls -l `tty` Si otros usuarios pueden leer y escribir en este dispositivo, tambin pueden ver lo que se est haciendo o an escribir directamente en el terminal redirigiendo su salida. Esto se usa en los comandos wall (write all, escribir a todos) y write (escribir mensajes entre usuarios). mesg muestra si est habilitada o no la recepcin de mensajes. mesg y cambia permisos de grupo y otros en el dispositivo, aceptando mensajes. mesg n rechaza mensajes. Verificar con ls -l `tty` que muestra los permisos que regulan la terminal del usuario. ls -l /dev/tty? muestra los permisos de las terminales principales; ls -l /dev/tty?? muestra una cantidad de tipos de terminal disponibles. Otros dispositivos. cat /etc/passwd cat /etc/passwd > /dev/null El dispositivo /dev/null acta como una papelera de tamao ilimitado que recibe la salida a descartar. No guarda nada; lo que all se enve se pierde para siempre. Todos los dispositivos de hardware del sistema tienen una representacin en el directorio /dev.

Preguntas y Ejercicios. Bibliografa. Comandos: chgrp chmod chown ln ls mesg tty Referencias: Kernighan-Pike[1987], Coffin[1989]

Preguntas y Ejercicios. Ficha Referencia: Manejo de Archivos ARCHIVOS. Sea la siguiente salida del comando ls -l: -rwsr-xr-x 1 victor docentes 29024 ene 1 16:29 controlar -rw-rw-r-- 1 victor docentes 2300 may 18 09:37 borrador.txt -rw-r--r-- 1 victor docentes 5895 may 15 12:08 index.htm -rwxr-xr-x 1 victor docentes 29024 ene 1 16:29 revisar -rwxr--r-- 1 victor docentes 29024 ene 1 16:29 mostrar drwxrwxrwt 2 victor tecnicos 1024 may 1 17:23 trabajos drwxr-xr-x 2 victor tecnicos 1024 oct 16 1998 netscape3 drwxrwx--x 2 victor tecnicos 1024 may 11 7:29 finanzas drwxrwxr-x 2 victor tecnicos 1024 jul 7 6:54 redes drwxr-xr-x 2 jperez docentes 1024 jun 17 19:35 corporacion El usuario jperez, del grupo docentes, tiene acceso al presente directorio. Indicar, si los hay: a) Archivos de los que puede mostrar contenido. b) Archivos que puede ejecutar como programa. c) Archivos en los que puede modificar contenido. d) Subdirectorios en los que puede ingresar. e) Subdirectorios en que puede grabar. f) Subdirectorios en los que puede borrar archivos que no sean de l. g) Subdirectorios en los que puede ejecutar programas contenidos en ellos pero no ver nombres de archivos. h) Archivos que puede ejecutar como programa con permisos del usuario victor. ARCHIVOS. Sea la siguiente salida de ls -l: -rw-r--r-- 1 root root 33280 jun 12 19:40 Carta.doc drwxrwxrwx 5 victor staff 1024 dic 4 1999 step drwxrwxr-x 22 victor staff 1024 nov 20 1999 Office51 drwxr-x--- 6 victor staff 1024 may 7 16:43 argos drwxrwxr-- 21 victor staff 1024 jul 11 18:22 bajados -rw-rw---- 3 root root 542 jul 13 11:26 boor.exe drwxrwxrwt 3 victor staff 1024 may 25 10:02 borrador -rwsrwsr-x 1 root root 9218 jun 12 19:41 pph3 drwxrwx--x 2 victor victor 1024 may 7 16:47 cdir -rw-rw-r-- 3 root root 542 jul 13 11:26 mysql-doc -rw-r-xr-- 3 victor staff 1084 ago 1 10:01 ver.exe -rwxr-xr-x 3 victor staff 1084 ago 1 10:01 ver drwxr-xr-x 7 victor victor 1024 jul 25 11:48 lit Indicar, si los hay, a) directorios pblicos; b) archivos que tienen enlaces hard; c) archivos ejecutables;

d) directorios recorribles por todo el mundo; e) directorios donde el grupo puede borrar archivos; g) archivos que son enlaces simblicos. f) archivos ejecutables con permisos de root; CREAR Y BORRAR ARCHIVOS Y DIRECTORIOS. a) Crear los archivos abaco, abajo, arriba, abalorio, balero, manejo. Verificar. b) Crear bajo el directorio actual los directorios ./varios, ./varios/ subdir1, ./varios/subdir2, ./varios/subdir1/subdir11. Copiar o crear en todos estos directorios los archivos de a). Verificar con listado recursivo. c) Borrar del directorio actual todos los archivos cuyo nombre empiece con "aba". Verificar el borrado, y la permanencia de estos archivos bajo el directorio varios y sus subdirectorios. d) Borrar del subdirectorio varios/subdir2 el archivo de nombre "balero". e) Borrar todos los archivos y subdirectorios bajo varios/subdir1 , includo el propio subdir1. f) Borrar todos los archivos y subdirectorios bajo varios , dejando este directorio vaco. g) Borrar el directorio varios. MOVER, CAMBIAR NOMBRE (terico). Escriba comandos para: a) mostrar nombre, dueo y grupo del archivo arch1 que est en el subdirectorio textos del subdirectorio usuario7 del subdirectorio home del directorio export . b) mover archivos cap1, cap2 ... cap9 desde el subdirectorio borrador hacia el subdirectorio libro, ambos subdirectorios dentro del directorio propio del usuario; usar la variable HOME para escribir las vas. c) concatenar los archivos cap1, cap2 .... cap9 del subdirectorio / export/home/usuario7/capitulos en un nico archivo sandokan ubicado en el directorio /export/home/libros. ENLACES. En su directorio de trabajo, cree un archivo arch1 con el contenido "Este es arch1". a) Cree un enlace simblico liga1 hacia el archivo arch1; verifique tipo de archivo, conteo de enlaces y contenido de ambos archivos. b) Cree un enlace hardware liga0 hacia el archivo arch1 ; verifique tipo de archivo, conteo de enlaces y contenido de ambos archivos. ENLACES. Marque todos los tipos de enlace que pueden establecerse en los siguientes casos. a) enlace hacia un archivo en el mismo directorio: _____ hardware _____ simblico b) enlace hacia un archivo en el mismo sistema de archivos: _____ hardware _____ simblico c) enlace hacia un archivo en otro sistema de archivos: _____ hardware _____ simblico d) enlace hacia un directorio en el mismo sistema de archivos: _____ hardware _____ simblico e) enlace hacia un directorio en otro sistema de archivos: _____ hardware _____ simblico

ENLACES. Copiar el archivo nota en el archivo nota.texto . Crear los enlaces simblicos mensaje, misiva, esquela y carta hacia el archivo nota. Crear los enlaces hard mensaje0, misiva0, esquela0 y carta0 hacia el archivo nota.texto. En ambos casos, verificar conteo de enlaces, tipos de archivo y contenidos. Borrar nota.texto ; analizar la situacin estudiando conteo de enlaces y contenidos. ENLACES. Crear en el directorio propio los enlaces public , docums y textos hacia el directorio /usr/doc . Qu tipo de enlace debe emplearse? Por qu? DUEOS Y GRUPOS (terico). Cambiar de dueo y grupo todos los archivos del directorio /export/trabajos que terminan con la palabra "obra", asignndolos al dueo jperez , grupo obras. DUEOS Y GRUPOS (terico). Asignar al grupo mant el directorio /export/ home/mantdir y todos sus archivos y subdirectorios. Cambiar el dueo de estos mismos archivos para el usuario jefemant. PERMISOS. a) Transformar los siguientes permisos simblicos en absolutos: rwxr-xr-x r-xr--r-rw-r----r-x--x--x b) Transformar los siguientes permisos absolutos en simblicos: 644 755 610 631 c) Fijar, en modo simblico, los permisos de arch1 en modo 754. d) Fijar, en modo absoluto, los permisos de arch1 en modo rwxr-x--x. PERMISOS. a) Fijar los permisos del directorio dir1 de modo que todos lo puedan leer y recorrer, pero slo el dueo pueda modificar sus archivos: 1) en modo simblico; 2) en modo absoluto. b) Modificar para que el grupo tambin pueda modificar archivos PERMISOS. a) Fijar en modo simblico los permisos del archivo ejecutable exec.tar para que sea ejecutable por todos, legible por el dueo y el grupo y modificable solo por el dueo. Repetir en modo absoluto. b) Fijar en modo absoluto los permisos del directorio dir1 de modo que slo el dueo y el grupo lo puedan recorrer y leer, y slo el dueo pueda grabar y borrar en l. Repetir en modo simblico. PERMISOS. Crear la siguiente estructura de directorios y archivos: dir1 arch1-1 dir2 arch2-1 Investigar el significado de los permisos r, w, x sobre directorios variando los permisos de los directorio dir1 y dir2 como sea necesario y verificando qu operaciones pueden realizarse sobre los archivos contenidos en l. Expresar los resultados en una tabla.

Manejo de Archivos Ejercicios complementariosFichas referencia: Manejo de Archivos, Resea de Comandos. Actualizar la fecha del archivo /tmp/control.tmp. Borrar el enlace simblico liga1. Borrar el enlace simblido nota1.txt que apunta al archivo ../carta.txt. Cambiar de nombre el directorio sumarios.textos por el de resumenes. Cambiar de nombre el archivo /export/trabajos/nota.txt por el de carta.txt en el mismo directorio. Mover el archivo nota.txt del subdirectorio trabajos del directorio padre del actual hacia el directorio actual. Con qu comando se borra un archivo? Y un directorio? Con qu comando se borra un enlace hard? Y un enlace simblico? Con qu comando se borra un enlace simblico a un directorio? Copiar, desde el directorio /parte2/aplics1/conf el archivo .exrc hacia el directorio actual. Actualizar su fecha. Copiar, desde el directorio /usr/local/conf todos los archivos de nombre terminados en ".cnf" hacia el directorio /grupos/admin/config. Crear en el subdirectorio bin del directorio propio, un enlace hard hacia el script may2min ubicado bajo utils en el directorio propio. Crear, en el subdirectorio bin del directorio propio, un enlace simblico al script /usr/ local/bin/conectar con nombre conec. Crear los siguientes enlaces, o indicar si no es posible: 1) lnarch3, enlace simblico hacia el archivo arch3; 2) lharch3, enlace hard hacia el archivo arch3; 3) lndir3, enlace simblico hacia el directorio dir3; 4) lhdir3, enlace hard hacia el directorio dir3. Crear un enlace del directorio /var/admin (a crear) hacia el directorio /var/log (existente). Crear un enlace hard de nombre carta.hard en el subdirectorio cartas.varias del directorio actual, hacia el archivo carta.txt del directorio actual. Crear un enlace simblico carta.sim en el directorio /grupos/cartas/pedroso hacia el archivo carta.txt del directorio actual. Crear un archivo vaco arch1 en el directorio actual. Crear un enlace hard liga0 hacia el archivo arch1. Cmo s que esos archivos tienen enlaces hard? Crear un enlace simblico liga1 hacia el archivo arch1 del directorio actual. Cmo s que el archivo liga1 es un enlace simblico? Determinar la va completa del comando xeyes. Determinar la va completa del comando vim (es una versin del editor vi ampliado en sus capacidades). Sin ejecutarlo, determinar si es posible escribir solamente vim para invocarlo, o ser necesario indicar su ruta completa. El archivo ejecutable idprint es ejecutable para todos. Fijar sus permisos para que corra con los permisos del dueo del archivo y del grupo al que pertenece el archivo, y no con los permisos de quien lo invoca. Eliminar el directorio propio y todos los archivos y subdirectorios del usuario pedrogom, ubicados bajo el directorio /home.

Eliminar el subdirectorio basura que est bajo el subdirectorio home del directorio export: a) si est vaco, b) si tiene archivos, c) si tiene archivos ocultos. Eliminar recursivamente todos los archivos y subdirectorios bajo el directorio hardware ubicado bajo el directorio material del directorio export: a) includo el propio directorio hardware; b) dejando el directorio hardware vaco. En el directorio /export/novela se encuentran lo