SISTEMAS DE COMPUTACION I Agosto 2007 Miguel Pincheira Caro miguel.pincheira@gmail.com http://robotica.chillan.ubiobio.cl/~miguel ¿Que es un Shell? • • Cuando Dennis Ritchie y Ken Thompson diseñaban UNIX, deseaban mejorar la forma en que las personas interactuaran con su nuevo sistema. • Entonces S.R. Bourne, otro programador de AT&T, creó el Shell. Primero que todo, es necesario dejar en claro que un Shell (sh, bash,kshell etc.) no es un sistema operativo, sino una parte importante de él; nuestro nexo a él. • El Shell es un programa que interpreta comandos para poder ejecutarlos. Esta ejecución puede ser de forma manual, por ejemplo cuando el usuario lo escribe directamente en una terminal, o bien agrupando comandos en un archivo de texto que luego será ejecutado. (Shell-script). • Estos shell-scripts, permiten también algunas instrucciones básicas de programación, como selección e iteración entre otras. DOS vs Shell •Distinción entre mayúsculas y minúsculas •Nombres de Archivos •En DOS se usa la norma ”8.3” •Parchado en Windows 95 •Caracteres Especiales •Existen algunos caracteres especiales, reservados para uso del intérprete de comandos (o shell), •Normalmente no podrán ser usados como caracteres comunes, se pueden utilizar como uno más CARACTERES RESERVADOS DEL SHELL EL SISTEMA DE ARCHIVOS •El sistema de archivos de Linux es un árbol de directorios y archivos. •En la base del ´arbol, esta el directorio raíz (root) •Linux monta todos los directorios unidades y dispositivos en alguna parte dentro del directorio raiz. PERMISOS DE USUARIO •Al ser Unix un sistema operativo multiusuario, se estableció un mecanismo por el cual se otorgan permisos a un determinado usuario y/o grupo para el acceso a un archivo. • Esto permite, por ejemplo, que si existe un archivo creado por un usuario en particular, este será propiedad del usuario y también tendrá el grupo del usuario. •Los permisos están divididos en tres tipos: lectura, escritura y ejecución (rwx). •Estos permisos pueden estar fijados para tres clases de usuario: el propietario del archivo, el grupo al que pertenece el archivo y para todo el resto de los usuarios. •El permiso de lectura permite a un usuario leer el contenido del archivo o en el caso de que el archivo sea un directorio, la posibilidad de ver el contenido del mismo. •El permiso de escritura permite al usuario modificar y escribir el archivo. En el caso de un directorio permite la crear nuevos archivos en él o borrar archivos existentes. •El permiso de ejecución permite al usuario ejecutar el archivo, si tiene algo para ejecutarse. Para los directorios permite al usuario cambiarse a él con el comando cd. COMANDOS PARA NAVEGAR POR EL SISTEMA DE ARCHIVOS •pwd : Print Working directory •Cd : Change directory •cd directorio •cd .. •cd ~usuario •ls : list •ls -l •ls -a •ls h* •mkdir nombre : make Directory •rmdir nombre : remove directory •Chmod : change modes COMANDOS MÁS COMUNES •rm algo Elimina el archivo algo •cp origen destino Copia el archivo origen a destino •mv origen destino Mueve el archivo origen a destino . •cat archivo Muestra en el contenido de archivo •head archivo Muestra las primeras líneas de archivo •tail archivo Muestra las ultimas líneas de archivo •file archivo Muestra información acerca de archivo •reset Reinicia la pantalla •clear Limpia la pantalla •grep palabra archivo Muestra las líneas donde aparece palabra en archivo EL PATH Los archivos ejecutables se encuentran en varias partes del árbol de directorios de Linux. Sin un shell, el sistema operativo nos permitiría ejecutar los comandos o programas escribiendo la ruta completa de estos. Por ejemplo, si el comando cd se encontrara en /usr/bin/ deberíamos escribir lo siguiente # /usr/bin/cd /home Sin embargo, en el Shell existe una variable de entorno, llamada PATH, que contiene la ruta a las carpetas donde el shell buscará un ejecutable, al que no escribamos su ruta. # cd /home CONFIGURAR EL PATH Los archivos ejecutables se encuentran en varias partes del árbol de directorios de Linux. Sin un shell, el sistema operativo nos permitiría ejecutar los comandos o programas escribiendo la ruta completa de estos. Por ejemplo,si el comando cd se encontrara en /usr/bin/ deberíamos escribir lo siguiente # /usr/bin/cd /home Sin embargo, en el Shell existe una variable de entorno, llamada PATH, que contiene la ruta a las carpetas donde el shell buscará un ejecutable, al que no escribamos su ruta. # cd /home EL PODER DE UNIX INTERACCIÓN DE COMANDOS • Una de las más poderosas característias de Unix , heredada también por Linux, es la interacción de sus comandos. • Los creadores de Unix usaron esta premisa: “Lograr programas complejos, utilizando varios pequeños programas que hacen solo una función específica y se comunican entre sí” EL PODER DE UNIX INTERACCIÓN DE COMANDOS Entubando (”Pipes”) • El caracter de tubería ”|”permite encadenar dos o más comandos. Es decir,la salida del primer comando, será la entrada del otro. • Así, para listar un directorio que contiene muchos archivos, podemos usar ls en colaboración con more (Que permite mostrar información de una pantalla por vez). # ls /usr/bin | more EL PODER DE UNIX INTERACCIÓN DE COMANDOS Redireccionando •Para redireccionar existen dos carateres especiales que permiten enviar la salida estandar de un programa, a un archivo de texto, o incluso un dispositivo. •El caracter ”>”, permite redireccionar a un nuevo archivo de texto (Si el archivo existe, lo sobreescribe) # ls *.mp3 > listaDeFotosyMusica.txt •El caracter ”>>”, hace casi lo mismo que el anterior, con la diferencia que si el archivo existe, anexa la salida del primer comando al final del archivo. # ls *.jpg > listaDeFotosyMusica.txt AYUDA !! •En *nix, siempre hay ayuda •Esta ayuda son las man pages, o páginas de manual, visibles desde consola. •Por ejemplo, si queremos tener más información acerca del comando ls debemos escribir : # man ls •Este manual, contiene información acerca de los comandos, pero también acerca de instrucciones de programación e incluso rutinas del kernel. Para esto, se divide en secciones, que son : •Sección 0 : Todas las secciones •Sección 1 : Comandos •Sección 2 : Llamadas al Sistema •Sección 3 : Llamadas de Librería (Programación) •Sección 4 : Archivos especiales •Sección 5 : Formatos de archivos y conversiones •Sección 6 : Juegos para Linux •Sección 7 : Paquetes de Macros y Convenciones •Sección 8 : Comandos de Administración de Sistema •Sección 9 : Rutinas del Kernel. COMPRESION Y ARCHIVACION ARCHIVO.TAR.GZ •La razón es porque se hace con dos programas distintos : tar y *zip. •TAR : es un archivador •ZIP (B2Zip, GZIP o ZIP) : es el compresor. •Para abrir un archivo fuente.tar.gz : # gunzip fuente.tar.gz # tar -xf fuente.tar . •Para crear un fichero tar, teclee: # tar -cvf miprimertar.tar directorio Donde miprimertar.tar es el archivo donde se ubican los ficheros de directorio Para comprimir un fichero con bzip, teclee: # bzip miarchivo Con lo que obtendremos un archivo comprimido llamado miarchivo.bz